In meinem aktuellen iPhone-Projekt habe ich ein Wörterbuch erstellt, das die Unterwörterbücher nach dem ersten Buchstaben des "Name" -Schlüssels gruppiert. NSLog gibt Folgendes zurück. Ich möchte ein identisches Wörterbuch erstellen, das nur die "Name" -Schlüssel unter jedem Anfangsbuchstabenschlüssel zeigt. Was ist der beste Weg, um eine Kopie einiger Elemente in den Unterwörterbüchern zu erstellen? Die ObjectForKey-Methoden wählen nur die Elemente für den Anfangsbuchstaben aus (z. B. "B" oder "C"). Bitte lassen Sie mich wissen, wenn ich das nicht deutlich genug erkläre. Danke!Ein Wörterbuch mit mehreren Unterwörterbüchern kopieren und nur bestimmte Schlüssel aus den Unterwörterbüchern zurückgeben
sectionedDictionaryByFirstLetter:{
B = (
{
Name = "B...A Name Starting with B";
Image = "ImageName1.png";
Text = "Some Text";
}
);
C = (
{
Name = "C...A Name Starting with C";
Image = "ImageName2.png";
Text = "Some Text";
}
);
N = (
{
Name = "N...A Name Starting with N";
Image = "ImageName3.png";
Text = "Some Text";
},
{
Name = "N...A Name Starting with N";
Image = "ImageName4.png";
Text = "Some Text";
},
{
Name = "N...A Name Starting with N";
Image = "ImageName5.png";
Text = "Some Text";
}
);
}
Das Endergebnis ich suche ist:
sectionedDictionaryByFirstLetter:{
B = (
{
Name = "B...A Name Starting with B";
}
);
C = (
{
Name = "C...A Name Starting with C";
}
);
N = (
{
Name = "N...A Name Starting with N";
},
{
Name = "N...A Name Starting with N";
},
{
Name = "N...A Name Starting with N";
}
);
}
Ich dachte immer, dass der Schlüssel-Enumerator eine Verschwendung ist. Es bedeutet in der Regel - iterieren durch die Schlüssel und nehmen Sie jeden Wert als eine "Suche" Operation später. –
Danke für die Hilfe. Ich habe einen kleinen Tippfehler gefunden: objectWithKey sollte objectForKey sein. Wo werden die Arrays auch zu newDict hinzugefügt? Danke! – Jonah
Hier ist, was ich getan habe, damit es funktioniert: NSString * name = [entry objectForKey: @ "Name"]; [newList addObject: [NSDictionary dictionaryWithObject: Name forKey: @ "Name"]]; NSString * afirstLetterString = [name substringToIndex: 1]; [newDict setObject: newList forKey: afirstLetterString]; – Jonah