首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将json数据保存在快速4中的用户默认值中

如何将json数据保存在快速4中的用户默认值中
EN

Stack Overflow用户
提问于 2018-03-29 12:01:29
回答 4查看 7.7K关注 0票数 4

这是我的模型课

代码语言:javascript
运行
复制
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"]

    }
}

成功登录后,我想保存这个数据的默认用户,以便当用户不得不不再提供登录凭据。这是我的密码

代码语言:javascript
运行
复制
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()
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-29 12:11:48

确保您的模型类是从NSObject类继承的,否则它将在运行时崩溃。

要存储数据:

代码语言:javascript
运行
复制
let data = NSKeyedArchiver.archivedData(withRootObject: <Your model class>)
UserDefaults.standard.set(data, forKey: "userDetails")

检索和转换数据

代码语言:javascript
运行
复制
if let data = UserDefaults.standard.value(forKey: "userDetails") as? Data {
    if let dict = NSKeyedUnarchiver.unarchiveObject(with: data) as? <Your model class> {
           print(dict)
     }
}
票数 3
EN

Stack Overflow用户

发布于 2018-03-29 12:17:03

4中,最好使用JSONEncoder将swift对象编码为JSON,使用JSONDecoder将JSON解码为Swift对象,在编码和解码之前确认模型类的可编码协议。You can follow this answer from stack overflow

票数 3
EN

Stack Overflow用户

发布于 2018-03-29 12:07:43

您可以使用数据将这个json存储在用户默认值中,如下所示:

代码语言:javascript
运行
复制
let myData = NSKeyedArchiver.archivedData(withRootObject: myJson)
UserDefaults.standard.set(myData, forKey: "userJson")

let recovedUserJsonData = UserDefaults.standard.object(forKey: "userJson")
let recovedUserJson = NSKeyedUnarchiver.unarchiveObject(with: recovedUserJsonData)

编辑

不能在NSUserDefault中存储映射器,只能存储NSData、NSString、NSNumber、NSDate、NSArray或NSDictionary

NSKeyedArchiver将映射器转换为NSData,可以存储到userdefault中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49555520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档