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       
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow