/ / ukladanie swifty json array do užívateľských predvolených nastavení - swift, alamofire, swifty-json

šetrenie rýchleho jsonového poľa na predvolené nastavenia - swift, alamofire, swifty-json

mám json data ktorý poskytuje nasledujúce informácie:

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 }
]
}
]

Používam swiftyjson. Chcem uložiť celé pole pomocou nsuserdefaults.

GlobalVar.defaults.set(json, forKey: "questionArray")
GlobalVar.defaults.synchronize()

Mám však chybu

Msgstr "[User Defaults] Pokus o nastavenie objektu, ktorý nie je uvedený v zozname vlastností".

Prosím, pomôžte mi, aby som bol nový. Overil som aj ďalšie podobné otázky, ale zdá sa, že nefungujú.

odpovede:

4 pre odpoveď č. 1

Nemôžete uložiť vlastný typ SwiftyJSON JSON na UserDefaults ale môžete uložiť surový pole, pretože deserializovaný typ kolekcie JSON je v súlade so zoznamom vlastností.

Len zavolaj arrayObject na JSON objekt:

GlobalVar.defaults.set(json.arrayObject, forKey: "questionArray")

1 pre odpoveď č. 2

Súbor slovníka nemôžete uložiť priamo do priečinka NSUserDefault, Musíte previesť objekt poľa na NSData

Ďalšie informácie nájdete v téme:

Pokus o nastavenie objektu bez zoznamu vlastností ako NSUserDefaults


1 pre odpoveď č. 3

Swift 3.0

Údaje vlastného typu SwiftyJSON môžete uložiť ako je uvedené nižšie.

guard let rawData = try? json.rawData() else { return }
UserDefaults.standard.setValue(rawData, forKey: "Your_key")

Ak chcete načítať údaje JSON z UserDefaults, môžete to urobiť takto.

guard let data = UserDefaults.standard.value(forKey: "Your_key") as? Data else { return }

let json = JSON(data)

0 pre odpoveď č. 4

Swift 4.0 | Xcode 9.1 | SwiftyJSON

Rad slovníkov môžeme uložiť priamo, bez problémov. Problém je len v tom, ako ho získať?

Sotva sa downcastuje na celý rad slovníkov (napríklad [[String: Any]]). preto sme vyžadovali moduly SwiftyJSON import SwiftyJSON // Don"t forget this

let arrayOfDictionary = [
{
"VersionNumber" : "1.0.0.0",
"FormID" : "18"
},
{
"VersionNumber" : "1.0.0.3",
"FormID" : "19"
}
]

Uložte ho priamo do UserDefaults ako:

UserDefaults.standard.set(saveFormDetails, forKey: "FormDetails")

Načítava sa z predvolených nastavení používateľa:

let savedFormDetailsData = JSON.init(rawValue:UserDefaults.standard.array(forKey: "FormDetails"))

SaveFormDetailsData je pole slovníka späť [Typ zoznamu nehnuteľností], ďalej robíme:

for form in 0..<arrayOfDictionary.count {
print("FormID :", savedFormDetailsData?[form]["FormID"])
print("VersionNumber :", savedFormDetailsData?[form]["VersionNumber"])
}