2017-10-12 8 views
0

Je l'ai regardé quelques postes différents ici et je ne peux pas sembler obtenir ce que je suis spécifiquement essayer de faire travailler. J'essaie de déclarer un tableau vide de dictionnaires. Le problème est à chaque fois que je tente de itérer sur chaque dictionnaire dans le tableau (sans courir) Je reçois une erreur essentiellement dire que la façon dont je mis en place le tableau n'est pas correct. Ce code est dans ma diapositive pour supprimer la fonction de sorte qu'il ne peut pas être exécuté sans que l'utilisateur ne remplisse le tableau de dicts en premier. Voici mon code.Déclaration d'un tableau de dictionnaires où la valeur pour chaque clé est un autre tableau (Swift)

var leagueList = [Dictionary<String, Array<String>>]() 


for dict in leagueList { 

    let key = dict.key as String! 

    if key == deletedAge { 
     self.leagueList.removeValue(forKey: deletedAge!) 
    } 
} 
+0

Peu importe, j'ai lu votre mauvaise question. Edit: Je l'ai fait – bhow

+0

Quelle est l'erreur et qu'est-ce que vous en train d'essayer de le faire? –

+0

Qu'attendez-vous de 'dict.key'? Les dictionnaires peuvent avoir plusieurs clés. – Hamish

Répondre

1

Vous avez plusieurs choses à faire ici.

Vous avez déclaré correctement leagueList comme un tableau de dictionnaires en utilisant génériques. C'est super.

Vos questions sont les suivantes:

1) self.leagueList.removeValue(forKey: deletedAge!) est à la recherche d'une clé dans un tableau. Les tableaux n'ont pas de clés, donc vous auriez une erreur là-bas.

2) dict.key semble supposer qu'il ya une seule clé dans le dictionnaire. Alors que dict est correctement un dictionnaire, Swift suppose qu'il aura plusieurs clés. Donc, si vous vouliez itérer eux (même s'il n'y a qu'un seul présent) que vous auriez à utiliser dict.keys à la place.

Si vous êtes tout simplement vouloir retirer la valeur de clé deletedAge pour chaque dictionnaire dans le tableau leagueList, un moyen facile de le faire est:

var leagueList = [Dictionary<String, Array<String>>]() 

for var dict in leagueList { 
    dict.removeValue(forKey: deletedAge!) 
} 
+0

Merci beaucoup! Cela fait un moment que je suis coincé là-dessus et c'est drôle que j'y pense vraiment tout le temps. – Branson

0

Il semble que vous essayez de chercher dans votre tableau de dictionnaires et de supprimer une clé spécifique de chacun. Pour ce faire, vous devez utiliser une boucle bidimensionnelle:

for var dict in leagueList { 
    for key in dict.keys { 
     if key == "someKey" { 
      dict.removeValue(forKey: key) 
     } 
    } 
}