Objective-C Language
NSDictionary
Suche…
Syntax
@{ Schlüsselwert, ... }
[NSDictionary dictionaryWithObjectsAndKeys: value, key, ..., nil];
Dikt [ Schlüssel ] = Wert ;
ID- Wert = Diktier [ Schlüssel ];
Bemerkungen
Die NSDictionary-Klasse deklariert die programmatische Schnittstelle für Objekte, die unveränderliche Zuordnungen von Schlüsseln und Werten verwalten. Verwenden Sie diese Klasse oder ihre Unterklasse NSMutableDictionary, wenn Sie eine bequeme und effiziente Methode zum Abrufen von Daten benötigen, die einem beliebigen Schlüssel zugeordnet sind. NSDictionary erstellt statische Wörterbücher und NSMutableDictionary erstellt dynamische Wörterbücher. (Der Einfachheit halber bezieht sich der Begriff Wörterbuch auf jede Instanz einer dieser Klassen, ohne die genaue Klassenzugehörigkeit anzugeben.)
Ein Schlüsselwertpaar in einem Wörterbuch wird als Eintrag bezeichnet. Jeder Eintrag besteht aus einem Objekt, das den Schlüssel darstellt, und einem zweiten Objekt, das den Wert dieses Schlüssels darstellt. Innerhalb eines Wörterbuchs sind die Schlüssel eindeutig. Das heißt, keine zwei Schlüssel in einem einzigen Wörterbuch sind gleich (wie von isEqual bestimmt :). Im Allgemeinen kann ein Schlüssel ein beliebiges Objekt sein (vorausgesetzt, dass es dem NSCopying-Protokoll entspricht (siehe unten)). Beachten Sie jedoch, dass bei der Schlüsselwertcodierung der Schlüssel eine Zeichenfolge sein muss (siehe Grundlagen der Schlüsselwertcodierung). Weder ein Schlüssel noch ein Wert können Null sein. Wenn Sie einen Nullwert in einem Wörterbuch darstellen müssen, sollten Sie NSNull verwenden.
NSDictionary wird mit seinem Gegenstück zur Core Foundation, CFDictionaryRef, gebührenfrei überbrückt. Weitere Informationen zum gebührenfreien Überbrücken finden Sie unter Gebührenfreie Überbrückung.
Erstellen mit Literalen
NSDictionary *inventory = @{
@"Mercedes-Benz SLK250" : @(13),
@"BMW M3 Coupe" : @(self.BMWM3CoupeInventory.count),
@"Last Updated" : @"Jul 21, 2016",
@"Next Update" : self.nextInventoryUpdateString
};
Erstellen mit dictionaryWithObjectsAndKeys:
NSDictionary *inventory = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:13], @"Mercedes-Benz SLK250",
[NSNumber numberWithInt:22], @"Mercedes-Benz E350",
[NSNumber numberWithInt:19], @"BMW M3 Coupe",
[NSNumber numberWithInt:16], @"BMW X6",
nil];
nil
muss als letzter Parameter als Sentinel übergeben werden, der das Ende anzeigt.
Wenn Sie Wörterbücher auf diese Weise instanziieren, gehen die Werte zuerst und die Schlüssel an zweiter Stelle. Im obigen Beispiel sind die Zeichenfolgen die Schlüssel und die Zahlen die Werte. Auch der Name der Methode spiegelt dies wider: dictionaryWithObjectsAndKeys
. Obwohl dies nicht falsch ist, wird die modernere Methode der Instantiierung von Wörterbüchern (mit Literalen) bevorzugt.
Mit plists erstellen
NSString *pathToPlist = [[NSBundle mainBundle] pathForResource:@"plistName"
ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:pathToPlist];
Einen Wert in NSDictionary festlegen
Es gibt mehrere Möglichkeiten, ein Schlüsselobjekt in einem NSDictionary festzulegen, je nachdem, wie Sie einen Wert erhalten. Zum Beispiel, um einen Lamborghini zu einer Liste von Autos hinzuzufügen
Standard
[cars setObject:lamborghini forKey:@"Lamborghini"];
Rufen Sie wie jedes andere Objekt die Methode von NSDictionary auf, die ein Objekt eines Schlüssels, objectForKey:
. Verwechseln Sie dies nicht mit setValue:forKey:
Das ist eine ganz andere Sache, Key Value Coding
Stenografie
cars[@"Lamborghini"] = lamborghini;
Dies ist die Syntax, die Sie für Wörterbücher in den meisten anderen Sprachen wie C #, Java und Javascript verwenden. Es ist viel bequemer als die Standardsyntax und wahrscheinlich lesbarer (vor allem wenn Sie in diesen anderen Sprachen schreiben), aber natürlich ist es kein Standard . Es ist auch nur in neueren Versionen von Objective C verfügbar
Einen Wert von NSDictionary abrufen
Es gibt mehrere Möglichkeiten, ein Objekt aus einem NSDictionary mit einem Schlüssel abzurufen. Zum Beispiel, um einen Lamborghini aus einer Liste von Autos zu bekommen
Standard
Car * lamborghini = [cars objectForKey:@"Lamborghini"];
Rufen Sie wie jedes andere Objekt die Methode von NSDictionary auf, die Ihnen ein Objekt für den Schlüssel objectForKey:
. Verwechseln Sie dies nicht mit valueForKey:
Das ist eine ganz andere Sache, Key Value Coding
Stenografie
Car * lamborghini = cars[@"Lamborghini"];
Dies ist die Syntax, die Sie für Wörterbücher in den meisten anderen Sprachen wie C #, Java und Javascript verwenden. Es ist viel bequemer als die Standardsyntax und wahrscheinlich lesbarer (vor allem wenn Sie in diesen anderen Sprachen schreiben), aber natürlich ist es kein Standard . Es ist auch nur in neueren Versionen von Objective C verfügbar
Prüfen Sie, ob NSDictionary bereits einen Schlüssel hat oder nicht
Ziel c:
//this is the dictionary you start with.
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name1", @"Sam",@"name2", @"Sanju",nil];
//check if the dictionary contains the key you are going to modify. In this example, @"Sam"
if (dict[@"name1"] != nil) {
//there is an entry for Key name1
}
else {
//There is no entry for name1
}