【问题标题】:set UserDefaultValue Swift 3 Error设置 UserDefaultValue Swift 3 错误
【发布时间】:2017-04-18 02:10:17
【问题描述】:
  1. 我有一个模型
  2. 我想将模型的值传递给其他类
  3. 我在 userDefault 中设置但得到错误“线程 1 信号 sigabrt”

    Alamofire.request("http://mylink.com/login", method: .post, parameters: parameters, encoding: JSONEncoding.default).responseObject { (response: DataResponse<LoginResponse>)
        in
        let loginResponse: AnyObject = response.result.value!
    
    
        UserDefaults.standard.setValue(loginResponse, forKey: "resultLogin")
    
    
    
    }
    

所以我想问一下如何将我的模型值设置为用户默认值

【问题讨论】:

  • 检查您的登录响应。可能是您的模型包含任何键的 nil 值。我有同样的问题,发现我的一个键的值为 nil。
  • 哪一行代码会导致错误?
  • @rmaddy UserDefaults.standard.setValue(loginResponse, forKey: "resultLogin")
  • 虽然与你的崩溃无关,但不要使用setValue(forKey:)。使用set(forKey:)。而且您只能将特定的数据类型存储在UserDefaults 中。请阅读UserDefaults 的文档以查看值类型。提示:AnyObject 不是有效类型之一。

标签: ios swift alamofire


【解决方案1】:

将您的登录响应转换为数据,然后保存到UserDefaults。否则,您也可以在将响应转换为Data 后使用NSKeyedArchiever。参考这个SO Post

【讨论】:

    【解决方案2】:

    要在用户默认值中存储一个值或对象,该值或对象必须是NSCoding 投诉。在这里,您在用户默认值中设置 AnyObject 类型的值。 要完成这项工作,请创建一个模型并实现 NSCoding。

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多