我想保存用户收到的最新通知,以便当他稍后再次打开该应用程序时,该通知不会为空,直到再次加载它们为止。
为此,我有一些自定义类,这些类不使用NSCODING。
class UserModel {
var email:String?
var profileImageUrl: String?
var username: String?
var id: String?
}
extension UserModel {
static func transformUserInfo(dict: [String:Any], key : String) -> UserModel {
let user = UserModel()
user.email = dict["email"] as? String
user.profileImageUrl = dict["profileImageUrl"] as? String
user.username = dict["username"] as? String
user.profilText = dict["profilText"] as? String
return user
}
}
它们被缩短了,不会造成过多的信息破坏。
现在,我想保存它们,并尝试使用用户默认值,但尚未成功。
// self.defaults.setValue(NSKeyedArchiver.archivedData(withRootObject: self.savedUsers), forKey: "savedUsers")
//
// self.defaults.setValue(NSKeyedArchiver.archivedData(withRootObject: self.savedNoti), forKey: "savedNoti")
// self.defaults.synchronize()
我以前从其他线程尝试过此操作,但没有成功。
我保存的用户
var savedUsers = [UserModel]()
预先感谢
答案 0 :(得分:1)
您可以尝试使用Codable
class UserModel : Codable {
var email:String?
var profileImageUrl: String?
var username: String?
var id: String?
}
//
do {
let data = try JSONEncoder().encode(yourModels) // convert array to data
let models = try JSONDecoder().decode([UserModel].self, from: data) // convert data to array
}
catch {
print(error)
}