由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试插入非属性列表对象

Posted

技术标签:

【中文标题】由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试插入非属性列表对象【英文标题】:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object 【发布时间】:2019-11-03 22:22:56 【问题描述】:

我尝试了互联网上的所有建议。

我在这里尝试将字典数组保存在用户默认值中。

let tokenInfo: [String: Any] = ["data": response?.data as Any, "startDate": response?.startDate as Any, "endDate": response?.endDate as Any]

 if error == nil
    userDefModel().token = tokenInfo

在 userDefModel 类中

var token: [String: Any]? 
    set 
        UserDefaults.standard.set(newValue, forKey: "token")
    
    get 
        return UserDefaults.standard.value(forKey: "token") as? [String: Any] ?? [:]
    

【问题讨论】:

显示您尝试存储的数据。 样本数据数据:"agfguyorhgvqiguahia9guhhdivisaguh89o3rujgbvu903ugepvy3ploeuvap0-3gv" startDate = "2019-10-04 18:20:51 +0000"; endDate = "2019-10-05 18:20:51 +0000"; 祝你好运。我不会在 UserDefaults 中放置用于命中端点的东西。 【参考方案1】:

由于您的字典项导致此错误,请在将字典设置为令牌之前尝试打印字典。

我认为问题可能出在数据中,您需要先转换它,然后再将其存储到字典中。

NSString(data: response!.data, encoding: NSUTF8StringEncoding)

另一种解决方案:

// Save
UserDefaults.standard.set(try? PropertyListEncoder().encode(value), forKey: key)

// Retrieve 
if let data = UserDefaults.standard.value(forKey: key) as? Data 
        userData = try? PropertyListDecoder().decode(Profile.self, from: data)

【讨论】:

以上是关于由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试插入非属性列表对象的主要内容,如果未能解决你的问题,请参考以下文章

由于未捕获的异常而终止应用程序 [UIImageView _isResizable]

由于未捕获的异常而终止应用程序,同时加载视图

由于未捕获的异常“NSInternalInconsistencyException”错误而终止应用程序

“由于未捕获的异常而终止应用程序”在推送视图控制器时崩溃

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序