2017-02-15 270 views
0

我收到以下错误。这个原因导致我的应用程序崩溃。无法转换类型的值(NSSingleEntryDictionary)

无法投类型的值 '__NSSingleEntryDictionaryI'(0x1015f8210)到 '的NSMutableDictionary'

所有我做的是:

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

我已经检查堆栈别人的答案,但不幸的是,他们对我没有帮助。

有人可以建议我为什么会发生这种情况吗?

任何帮助将higgle感谢!

+0

downvoter请提原因! – User511

+0

请提及投票原因。 – User511

回答

2

根本不要在Swift中使用可变基础集合类型(NSMutable..)。他们是不相关的斯威夫特同行,你不能施放收集对象NSMutable...

声明arrayData辞书

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

的原生斯威夫特阵列和改线得到字典

var tempDict = self.arrayData[indexPath.row] 

代码较少,没有类型转换,tempDict可以使用var关键字进行修改。

+0

它在另一行显示错误。 – User511

+0

你需要用'append(...'和'object(在index:'和'object(对于key:')索引/键值订阅来替换'add(...')。 – vadian

1

字典表示具有{}和阵列用[]表示//在印刷响应可能必须阵列()

所以,你的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 
} 
+0

var tempDict = self.arrayData.object(at:indexPath.row)as! ([String:Any]] let tempKey:Int = indexPath.row + 1 let myString = String(tempKey) let tempArr =(tempDict.value(forKey:myString)as?NSMutableArray)?。mutableCopy()as! NSMutableArray tempArr.replaceObject(at:1,with:numberOfTaps) dict.setValue(tempArr,forKey:myString) – User511

+0

这是我的代码。如果我更新它会在另一行显示错误。 – User511

+0

什么错误。 –

相关问题