swift2 无法将类型为“Swift._NativeDictionaryStorageOwner”的值强制转换为“NSArray”(0x383bb8d8)

pbgvytdp  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(169)

在重新访问一些似乎可以与Xcode7.3一起工作的代码时,我注意到我得到了一个无法将"Swift._NativeDictionaryStorageOwner“(0x 40 c2134)类型的值强制转换为”NSArray“(0x 383 bb8 d8)的问题。
userdata.data 用户其他信息[索引路径.行]转换为!NSArray
以下是可能出现问题的代码部分:

func collectionView(collectionView: UICollectionView,        didSelectItemAtIndexPath indexPath: NSIndexPath) {

    let userdata:SubContentsViewController! = SubContentsViewController()
    let storyboard = UIStoryboard(name: "SubContentsViewController", bundle: nil)
    let subContentsVC = storyboard.instantiateViewControllerWithIdentifier("SubContentsViewController") as! SubContentsViewController
    userdata.data = userOtherInfo[indexPath.row] as! NSArray
    self.navigationController?.pushViewController(subContentsVC, animated: true)
}
ujv3wf0j

ujv3wf0j1#

正如你在评论中所写
self.userOtherInfo = rows
self.userOtherInfo = rows
如果成功,则rows / userOtherInfo字典的数组([[String: AnyObject]])。
这就是错误消息的内容:
无法将字典强制转换为数组。
解决办法非常非常简单。
由于编译器已经知道userOtherInfo包含[String: AnyObject]的数组,因此根本不需要强制转换。

userdata.data = userOtherInfo[indexPath.row] // object is [String:AnyObject]

请确保将userdata.data声明为[String:AnyObject]或更具体的字典。

wlp8pajw

wlp8pajw2#

这个解决方案对我来说很好用。让mutableDict = NSMutableDictionary(字典:新词典结果!)

相关问题