Swift 3 - 将嵌套字典设置为UserDefaults - 崩溃

时间:2017-03-17 11:27:15

标签: dictionary swift3

我正在尝试将嵌套字典保存到UserDefaults,但每当我尝试保存时,我都会崩溃:

为什么会崩溃?在swift 2中它工作得很好

  

libc ++ abi.dylib:以未捕获的类型异常终止   NSException

这是我的功能:

var arrRes = [[String:AnyObject]]() //Array of dictionary

GetNewsFeed.getAllNews { (result) in
            if let resData = result.arrayObject {
                self.arrRes = resData as! [[String : AnyObject]]
                self.defaults.set(self.arrRes, forKey: self.ARRAY_CACHE) // ERROR
                self.defaults.synchronize()

                print(self.defaults.dictionary(forKey: self.ARRAY_CACHE))
            }

        }

1 个答案:

答案 0 :(得分:0)

仅使用该片段很难回答。我认为以下行返回一个nil值并导致后一行崩溃:

 self.arrRes = resData as! [[String : AnyObject]]

使用以下可选链接技术,看看是否解决了这个问题:

if let data = resData as? [[String : AnyObject]] {
      self.defaults.set(data, forKey: self.ARRAY_CACHE)
} else {
      debugPrint("invalid data")
}