J'ai un dictionary avec plusieurs données de dictionary:
{ 1455201094707 = { }; 1455201116404 = { }: 1455201287530 = { }; }
Je dois append tous ces dictionarys à un tableau dans swift. Comment itérer le dictionary comme:
for let tempDict in dataDictionary { self.tempArray.addObject(tempDict) }
Erreur "laisser le motif ne peut pas apparaître nested dans un context déjà immuable"
for tempDict in dataDictionary as! NSMutableDictionary { self.tempArray.addObject(tempDict) }
Erreur: L'élément type d'argument (aka (key: AnyObject, valeur: AnyObject)) le type d'argument n'est pas conforme au type attendu anyobject
for tempDict in dataDictionary as! NSMutableDictionary { self.tempArray.addObject(tempDict as! AnyObject) }
Erreur: Impossible de convertir la valeur de type '(Swift.AnyObject, Swift.AnyObject)' (0x1209dee18) en 'Swift.AnyObject' (0x11d57d018).
for tempDict in dataDictionary { self.tempArray.addObject(tempDict) }
Erreur: Valeur de Type AnyObject n'a aucun générateur de membre
modifier
Je veux le tableau final comme:
( { 1455201094707 = { }; } { 1455201116404 = { }: } )
Quelle est la bonne façon de mettre en œuvre cela?
Toute aide serait appréciée…..
J'ai utilisé le code:
var tempArray:[NSDictionary] = [] for (key, value) in tempDict { tempArray.append([key : value]) }
Erreur: valeur de type AnyObject n'est pas conforme au type de key de dictionary attendu NSCopying
code:
let tempArray = tempDict.map({ [$0.0 : $0.1] })
Erreur: le type d'expression est ambigu sans plus de context
Tout d'abord, quand vous utilisez
for let tempDict in dataDictionary { self.tempArray.addObject(tempDict) }
Swift vous donne tuple comme (key, valeur) dans tempDict.
Donc, vous devriez itérer comme ça
for (key, value) in sourceDict { tempArray.append(value) }
Note: J'ai utilisé ici des structures rapides natives, et mon conseil – de les utiliser aussi souvent que possible (au lieu des ObjC)
Ou vous pouvez utiliser la fonction de carte sur le dictionary.
let array = sourceDict.map({ $0.1 })
Modifier. Pour
( { 1455201094707 = { }; } { 1455201116404 = { }: } )
utilisation
for (key, value) in sourceDict { tempArray.append([key : value]) }
ou
let array = dict.map({ [$0.0 : $0.1] })
Remarque. si vous utilisez NSDictionary, vous devez le convertir en dictionary rapide
if let dict = dict as? [Ssortingng: AnyObject] { let array = dict.map({ [$0.0 : $0.1] }) print(array) }
Obtenez toutes les keys du dictionary, car ce NSDictionary
a la propriété allKeys
.
Boucle toutes les keys et ajoute un object pour la key au tableau.
Avant toutes les étapes ci-dessus, lisez la documentation !
Bonne chance!