我有这个结构
//GLOBAL STRUCT USER
struct User: Codable{
var info: UserInfo?
}
//MARK:-USER INFO
struct UserInfo: Codable{
var companyName: String?
var companyAddress: String?
var companyCity: String?
var companyCap: String?
var companyTelephone: String?
var companyFax: String?
var companyMobile: String?
var companyWeb: String?
var companyEmail: String?
var companyVat: String?
var companySDI: String?
var companyPEC: String?
var companyLogo: Data?
}
我用这个保存和读取数据:
struct LocalData{
static var userDatas: User {
get {
guard let data = UserDefaults.standard.data(forKey: #function) else {
return User(info: UserInfo(companyName: "", companyAddress: "", companyCity: "", companyCap: "", companyTelephone: "", companyFax: "", companyMobile: "", companyWeb: "", companyEmail: "", companyVat: "", companySDI: "", companyPEC: "", companyLogo: Data()))
}
do {
let datas = try JSONDecoder().decode(User.self, from: data)
return datas
} catch {
print(error)
}
return User(info: UserInfo(companyName: "", companyAddress: "", companyCity: "", companyCap: "", companyTelephone: "", companyFax: "", companyMobile: "", companyWeb: "", companyEmail: "", companyVat: "", companySDI: "", companyPEC: "", companyLogo: Data()))
}
set{
guard let data = try? JSONEncoder().encode(newValue) else { return }
UserDefaults.standard.set(data, forKey: #function)
}
}
}
如果我存储任何数据,例如:
LocalData.userDatas.info?.companyAddress = "TEST"
当我重新启动应用程序(不是从后台但我关闭并重新打开)时,如果我在“viewWillAppear”中放置一个中断并写入控制台
po LocalData.userDatas
LocalData.userDatas 中的所有数据都是 nil