ios - 如何在 swift 4 中将 json 数据保存在 userdefaults 上

标签 ios swift nsuserdefaults swift4

enter image description here

这是我的模型类

class UserRoot : Mappable {
    var success : Bool!
    var user : UserDetails!
    var error = ""

    required init?(map: Map) {

    }
    func mapping(map: Map) {
        success <- map["success"]
        user <- map["user"]
        error <- map["error"]

    }
}

成功登录后,我想将此数据保存在用户默认值上,这样当用户不必再次提供登录凭据时。这是我的代码

class Default : NSObject{
    static func saveToSharedPrefs(user: UserDetails!) {
        let d = UserDefaults.standard
        if user != nil {
            d.set(Mapper().toJSONString(user, prettyPrint: false) , forKey: "USERDETAILS")
        } else {
            d.set(nil, forKey: "USERDETAILS")
        }
        d.synchronize()
    }
}

最佳答案

Make sure your model class is inherited from NSObject class otherwise it will crash at run time.

存储数据:

let data = NSKeyedArchiver.archivedData(withRootObject: <Your model class>)
UserDefaults.standard.set(data, forKey: "userDetails")

检索和转换数据

if let data = UserDefaults.standard.value(forKey: "userDetails") as? Data {
    if let dict = NSKeyedUnarchiver.unarchiveObject(with: data) as? <Your model class> {
           print(dict)
     }
}

关于ios - 如何在 swift 4 中将 json 数据保存在 userdefaults 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49555520/

相关文章:

ios - 不用 NSUserDefaults 保存数据的方法

ios - 享受 UIView 动画和 UIView 翻转的乐趣

c++ - Xcode 中下一次出现的区分大小写选择

swift - 如何在 Swift 中以字符串格式 "English"(不是 "en")显示当前语言?

ios - 通过遍历字典显示随机问题

ios - 本地通知并对存档进行更改

ios - NSUserdefaults - 如何在 Swift 2.2 Xcode7 中使用 objectforkey

ios - 约束和子层(CALayer)不更新

ios - 如何检查 iOS 应用程序中是否使用了库

ios - Objective c countOfBytesReceived over countOfBytesExpectedToReceive 返回 0.000000