无法将类型'Swift._NativeDictionaryStorageOwner <swift.string,swift.anyobject =“”>'(0x40c2134)的值转换为'NSArray'(0x383bb8d8)

时间:2016-04-20 08:43:21

标签: ios swift2 xcode7.3

在重新访问一些似乎与Xcode7.3一起使用的代码时,我注意到我收到了'Swift._NativeDictionaryStorageOwner'(0x40c2134)类型的'无法转换为'NSArray'(0x383bb8d8)的值。

userdata.data = userOtherInfo [indexPath.row] as! 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)
}

2 个答案:

答案 0 :(得分:0)

正如您在评论中写的那样

  

rows = value["search_result"] as? [[String: AnyObject]]
  self.userOtherInfo = rows

成功时,

rows / userOtherInfo词典[[String: AnyObject]])的数组。
这是错误信息所说的内容:

  

无法将Dictionary转换为数组。

解决方案非常简单。

由于编译器已经知道userOtherInfo包含[String: AnyObject]数组,因此根本不需要转换。

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

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

答案 1 :(得分:0)

此解决方案对我来说效果很好。 let mutableDict = NSMutableDictionary(dictionary:newDictionaryResult!)