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

Dictionary Swift 3-将嵌套字典设置为UserDefaults-崩溃,dictionary,swift3,Dictionary,Swift3,我正在尝试将嵌套字典保存到UserDefaults中,但每当我尝试保存时,都会发生崩溃: 为什么会崩溃?在swift 2中,它工作得很好 libc++abi.dylib:以类型为的未捕获异常终止 N例外 这是我的职责: var arrRes = [[String:AnyObject]]() //Array of dictionary GetNewsFeed.getAllNews { (result) in if let resData = result.arrayObj

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

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

libc++abi.dylib:以类型为的未捕获异常终止 N例外

这是我的职责:

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))
            }

        }

仅凭这段话很难回答。我认为以下行返回一个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")
}

例外的原因是什么?考虑到在很多情况下,SWIFT 3中的字典是<代码> [字符串:任意] < /代码>。