аз имам json data
която дава следната информация:
let data = [
{
"QuestionTitle" : "Entomology is the science that studies",
"Id" : 205,
"Options" : [
{ "Option" : "Insects", "Id" : 810 },
{ "Option" : "The origin and history of technical and scientific terms", "Id" : 811 },
{ "Option" : "The formation of rocks", "Id" : 812 },
{ "Option" : "Behavior of human beings", "Id" : 809 }
]
},
{
"QuestionTitle" : "A train running at the speed of 60 km/hr crosses a pole in 9 seconds. What is the length of the train?",
"Id" : 199,
"Options" : [
{ "Option" : "120 metres", "Id" : 785 },
{ "Option" : "324 metres", "Id" : 787 },
{ "Option" : "180 metres", "Id" : 786 },
{ "Option" : "150 metres", "Id" : 788 }
]
}
]
Използвам swiftyjson. Искам да запазя целия масив с помощта на nsuserdefaults.
GlobalVar.defaults.set(json, forKey: "questionArray")
GlobalVar.defaults.synchronize()
Въпреки това получавам грешка
"[Потребителски настройки по подразбиране] Опит за задаване на обект без списък със свойства".
Моля, помогнете аз съм нов за бързо. Проверих и други подобни въпроси, но изглежда не работи.
Отговори:
4 за отговор № 1Не можете да запазите персонализирания тип SwiftyJSON JSON
да се UserDefaults
но можете да запазите суров масив, защото десериализиран JSON тип колекция е съвместим със списъка на свойствата.
Просто звънни arrayObject
на JSON
предмет:
GlobalVar.defaults.set(json.arrayObject, forKey: "questionArray")
1 за отговор № 2
Не можете да запазите масива от речник директно към NSUserDefault
, Трябва да конвертирате обекта в масива NSData
Вижте още за помощ:
Опит за задаване на обект, който не е списък със свойства, като NSUserDefaults
1 за отговор № 3
Swift 3.0
Можете да запазите SwiftyJSON персонализирани типове данни по-долу.
guard let rawData = try? json.rawData() else { return }
UserDefaults.standard.setValue(rawData, forKey: "Your_key")
И, За да изтеглите JSON данни от UserDefaults, можете да направите подобен начин.
guard let data = UserDefaults.standard.value(forKey: "Your_key") as? Data else { return }
let json = JSON(data)
0 за отговор № 4
Суифт 4.0 | Xcode 9.1 | SwiftyJSON
Можем да спасим редица речници директно, без проблем. Само, проблемът е как да го извлечем?
Тя едва се спуска към масив от речник (да речем [[String: Any]]). за това са необходими подскоци SwiftyJSON import SwiftyJSON // Don"t forget this
let arrayOfDictionary = [
{
"VersionNumber" : "1.0.0.0",
"FormID" : "18"
},
{
"VersionNumber" : "1.0.0.3",
"FormID" : "19"
}
]
Запазвате го директно в UserDefaults като:
UserDefaults.standard.set(saveFormDetails, forKey: "FormDetails")
Извличане от UserDefaults:
let savedFormDetailsData = JSON.init(rawValue:UserDefaults.standard.array(forKey: "FormDetails"))
Сега, savedFormDetailsData е масивът от речника назад [Тип PropertyList], за по-нататъшно:
for form in 0..<arrayOfDictionary.count {
print("FormID :", savedFormDetailsData?[form]["FormID"])
print("VersionNumber :", savedFormDetailsData?[form]["VersionNumber"])
}