这是我的模型课
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()
}
}
发布于 2018-03-29 12:11:48
确保您的模型类是从
NSObject
类继承的,否则它将在运行时崩溃。
要存储数据:
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)
}
}
发布于 2018-03-29 12:17:03
在4中,最好使用JSONEncoder将swift对象编码为JSON,使用JSONDecoder将JSON解码为Swift对象,在编码和解码之前确认模型类的可编码协议。You can follow this answer from stack overflow
发布于 2018-03-29 12:07:43
您可以使用数据将这个json存储在用户默认值中,如下所示:
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
中。
https://stackoverflow.com/questions/49555520
复制相似问题