2017-02-15 4 views
0

nicht umwandeln Ich erhalte den folgenden Fehler. Meine App stürzt aus diesem Grund ab.Konnte Wert des Typs (NSSingleEntryDictionary)

konnte nicht Wert vom Typ gegossen '__NSSingleEntryDictionaryI' (0x1015f8210) auf 'NSMutableDictionary'

Alles, was ich tue:

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

Ich habe die anderen Antworten auf Stapel überprüft, aber Leider waren sie nicht hilfreich für mich.

Kann mir jemand vorschlagen, warum das passiert?

Jede Hilfe wäre higgle geschätzt !!

+0

downvoter bitte erwähnen grund !! – User511

+0

Bitte geben Sie den Grund für die Abstimmung an. – User511

Antwort

2

Verwenden Sie einfach keine veränderlichen Foundation Collection-Typen (NSMutable..) überhaupt in Swift. Sie sind nicht auf die Swift Kollegen und Sie können eine Sammlung Objekt NSMutable...

Deklarieren arrayData als native Swift Reihe von Wörterbüchern

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

und ändern Sie die Zeile werfen das Wörterbuch

var tempDict = self.arrayData[indexPath.row] 
zu erhalten

Weniger Code, keine Typumwandlung und tempDict ist mit dem Schlüsselwort var änderbar.

+0

Es zeigt Fehler in anderen Zeilen. – User511

+0

Sie müssen 'add (...' mit 'append (...' und 'object (bei index:' und 'object (für key:' mit index/key subscription) ersetzen. – vadian

1

Wörterbuch bezeichnet mit {} und Array bezeichnet mit [] // In gedruckter Antwort Sie Array mit() kann

So, Ihr tempDict Teil Array von Wörterbuch ist ... Sie haben es zu analysieren, wie

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

obwohl Sie Kraft unwrap nicht .. verwenden entweder verwenden if let oder guard Anweisung

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: Beliebige]] Lassen Sie tempKey: Int = indexPath.row + 1 Lassen Sie myString = String (tempKey) Lassen Sie TempArr = (tempDict.value (forKey: myString) als? NSMutableArray) ?. mutableCopy() as! NSMutableArray tempArr.replaceObject (at: 1, mit: numberOfTaps) dict.setValue (tempArr, forKey: myString) – User511

+0

Dies ist mein Code. Wenn ich es aktualisiere, wird ein Fehler in einer anderen Zeile angezeigt. – User511

+0

was der Fehler. –

Verwandte Themen