2017-02-15 13 views
0

以下のエラーが発生しています。私のアプリはこのような理由でクラッシュしています。タイプ(NSSingleEntryDictionary)の値をキャストできません

型の値をキャストすることができませんでした '__NSSingleEntryDictionaryI'(0x1015f8210) 'NSMutableDictionary'

に私がやっているすべては、次のとおりです。

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

私は、スタック上の他の人の答えをチェックしましたが、残念ながら、彼らは私にとっては役に立たなかった。

これはなぜ起こっているのですか?

どのようなヘルプも高く評価されます!

+0

downvoterに言及してください理由! – User511

+0

ダウン投票の理由を述べてください。 – User511

答えて

2

Swiftでは、変更可能なFoundationコレクションタイプ(NSMutable..)を使用しないでください。彼らはスウィフト対応に関連していない、あなたは辞書

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

のネイティブ・スウィフト配列として宣言し NSMutable...

arrayDataをコレクションオブジェクトをキャストし

var tempDict = self.arrayData[indexPath.row] 
に辞書を得るためにラインを変更することはできません

コードが少なく、タイプキャストがなく、tempDictvarキーワードで変更可能です。

+0

別の行にエラーが表示されます。 – User511

+0

あなたは、 '' add(... ')を' 'add(...'と ''オブジェクト(インデックス: '' key: – vadian

1

辞書は} {を表し、配列は、あなたが()

だから、あなたのtempDict部分は辞書の配列です...あなたが好きそれを解析する必要があるとの配列を有していてもよく//印刷対応して、[]で表し、

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

if letまたはguardの文...力アンラップを使用するか使用しないでくださいが

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! 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

このエラーは何ですか? –

関連する問題