2017-02-15 268 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

什麼錯誤。 –

相關問題