无法转换类型的值(NSSingleEntryDictionary)

时间:2017-02-15 05:25:17

标签: ios swift3

我收到以下错误。我的应用程序崩溃了。

  

无法转换类型' __ NSSingleEntryDictionaryI'的值(0x1015f8210)到' NSMutableDictionary'

我所做的只是:

var tempDict = self.arrayData.object(at: indexPath.row) as!
NSMutableDictionary

我已经在堆栈上检查了其他人的答案,但遗憾的是他们对我没有帮助。

有人能告诉我为什么会这样吗?

任何帮助都会受到高度赞赏!!

2 个答案:

答案 0 :(得分:2)

根本不要在Swift中使用可变的Foundation集合类型(NSMutable..)。它们与Swift对应物无关,您无法将集合对象强制转换为NSMutable...

arrayData声明为本机Swift词典数组

var arrayData = [[String:Any]]()

并更改该行以获取字典

var tempDict = self.arrayData[indexPath.row]

使用tempDict关键字可以减少代码,没有类型广播和var可变。

答案 1 :(得分:1)

Dictionary表示{},Array表示[] //在打印的响应中,您可能有()

的数组

所以,你的tempDict部分是字典数组......你必须像

那样解析它
var tempDict = self.arrayData.object(at: indexPath.row) as! [[String : Any]]
  

虽然请不要使用强制解包..使用if letguard声明

if let tempDict = self.arrayData.object(at: indexPath.row) as! [[String : Any]]

{ 
   // do something
 }
else
{

   // catch the error
 }