0

我有这个结构

//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

4

0 回答 0