сохранить словарь в userdefault как отдельный массив - Alamofire - SwiftyJSon - PullRequest
0 голосов
/ 21 сентября 2019
{
  "message" : "success ",
  "status" : "1",
  "Result" : {
    "name" : "abc",
    "lastname" : null,
    "middlename" : null,
    "id" : 20431
  }
}

Я хочу сохранить объект результата в отдельные пользовательские ошибки, используя модель и как ее получить

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Из документов здесь .Вы пробовали так:

//convert the JSON to a raw String
if let rawString = json.rawString() {
    userDefaults.set(rawString, forKey: "jsonData")
} else {
    print("json.rawString is nil")
}
0 голосов
/ 21 сентября 2019

Сначала создайте модель для этого, используя Codable протокол

struct MyJSON : Codable {
    let message : String?
    let status : String?
    let result : JSONResult? // Don't use Result, a keyword in swift 
}

struct JSONResult : Codable {
    let name : String?
    let lastname : String?
    let middlename : String?
    let id : Int?
}

Затем используйте протокол для сопоставления JSON, сохраните модель в UserDefaults.

let jsonString = 

"""
{
  "message" : "success ",
  "status" : "1",
  "result" : {
    "name" : "abc",
    "lastname" : null,
    "middlename" : null,
    "id" : 20431
}
}
"""


let jsonData = Data(jsonString.utf8)
let data = try JSONDecoder().decode(MyJSON.self, from: jsonData)


// save model in userDefaults 
func saveModel() {
    if let encoded = try? JSONEncoder().encode(data) {
    UserDefaults.standard.set(encoded, forKey: "MySavedValue")
   }

}


//get the model 

func getModel() -> MyJSON? {
     guard let data = UserDefaults.standard.object(forKey: "MySavedValue") as? Data else {
            return nil
        }
     return try? JSONDecoder().decode(MyJSON.self, from: data) 
}

какиспользовать

saveModel()

print(getModel()?.message) // print("Success")

...