UserDefaults 错误:执行被中断,原因:EXCBADACCESS代码=1,地址=0x38

问题描述

嗨,这个功能有问题。 如果我尝试设置和读取数据,我会收到此错误

错误:执行被中断,原因:EXCBADACCESS(代码=1, 地址=0x38)。该过程已留在原处 中断,使用“线程返回-x”返回之前的状态 表达式求值。

尝试在 Playground 中导入此代码以重现问题

import UIKit
    //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: String?
       
    }
    struct LocalData{
      static var userDatas: User?{
        get{
          guard let datas = UserDefaults.standard.data(forKey: #function) else {
            return User(info: UserInfo(companyName: "",companyAddress: "",companyCity: "",companyCap: "",companyTelephone: "",companyFax: "",companyMobile: "",companyWeb: "",companyEmail: "",companyVat: "",companySDI: "",companyPEC: "",companylogo: ""))
             
          }
          do{
            let myData = try JSONDecoder().decode(User.self,from: datas)
            return myData
          }
          catch{
            print(error)
          }
          return User(info: UserInfo(companyName: "",companylogo: ""))
        }
        set{
          guard let mydatas = try? JSONEncoder().encode(newValue) else { return }
          print(mydatas)
          UserDefaults.standard.setValue(mydatas,forKey: #function)
           
        }
      }
    }
    LocalData.userDatas?.info?.companyAddress = "TEST"
    print(LocalData.userDatas?.info)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)