webentwicklung-frage-antwort-db.com.de

Hinzufügen zu einem NSDictionary

Ich habe ein NSMutableArray verwendet und festgestellt, dass die Verwendung eines Wörterbuchs für das, was ich erreichen möchte, viel einfacher ist.

Ich möchte einen Schlüssel als NSString und einen Wert als int im Wörterbuch speichern. Wie geht das? Zweitens, was ist der Unterschied zwischen einem veränderlichen und einem normalen Wörterbuch?

85
jarryd

Ein veränderliches Wörterbuch kann geändert werden, d. H. Sie können Objekte hinzufügen und entfernen. Ein nveränderlich wird behoben, sobald es erstellt wurde.

erstellen und hinzufügen:

NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];

und abrufen:

int myNumber = [[dict objectForKey:@"A cool number"] intValue];
190
Eiko

Mit dieser Einstellung verwenden Sie die setValue:(id)value forKey:(id)key Methode von NSMutableDictionary Objekt:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];

Oder im modernen Objective-C:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"age"] = @5;

Der Unterschied zwischen veränderlich und "normal" ist nun, Veränderlichkeit. Das heißt Sie können den Inhalt von NSMutableDictionary (und NSMutableArray) ändern, während Sie dies mit "normalen" NSDictionary und NSArray nicht tun können.

32
Eimantas

Wann immer das Array deklariert wird, müssen nur die Schlüsselwerte in NSDictionary wie folgt hinzugefügt werden

NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];

die Schlüsselwerte in diesem NSDictionary können nicht hinzugefügt oder entfernt werden

Wo wie in NSMutableDictionary können wir die Objekte nach der Initialisierung des Arrays auch mit dieser Methode hinzufügen

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];'
[mutableDict setObject:@"Value1" forKey:@"Key1"];
[mutableDict setObject:@"Value2" forKey:@"Key2"];
[mutableDict setObject:@"Value3" forKey:@"Key3"];

um den Schlüsselwert zu entfernen, müssen wir den folgenden Code verwenden

[mutableDict removeObject:@"Value1" forKey:@"Key1"];
14
Madhu

Update-Version

Ziel-C

Erstellen:

NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5}; 

Veränderung:

NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];     //Make the dictionary mutable to change/add
mutableDictionary[@"myKey3"] = @3;

Die Kurzschrift heißt Objective-C Literals.

Swift

Erstellen:

var dictionary = ["myKey1": 7, "myKey2": 5]

Veränderung:

dictionary["myKey3"] = 3
9

Sie möchten fragen: "Was ist der Unterschied zwischen einem veränderlichen und einem nicht veränderlichen Array oder Wörterbuch?" Oft werden dort verschiedene Begriffe verwendet, um Dinge zu beschreiben, die Sie bereits kennen. In diesem Fall können Sie den Begriff "veränderlich" durch "dynamisch" ersetzen. Ein mutierbares Wörterbuch oder Array ist also eines, das "dynamisch" ist und sich zur Laufzeit ändern kann, wohingegen ein nicht mutierbares Wörterbuch oder Array ein "statisches" ist, das in Ihrem Code definiert ist und sich zur Laufzeit nicht ändert (mit anderen Worten) werden Sie die Elemente nicht hinzufügen, löschen oder möglicherweise sortieren.)

In Bezug auf die Vorgehensweise bitten Sie uns, die Dokumentation hier zu wiederholen. Alles, was Sie tun müssen, ist, im Beispielcode und in der Xcode-Dokumentation zu suchen, um genau zu sehen, wie es gemacht wird. Aber die veränderbare Sache hat mich auch geworfen, als ich das erste Mal lernte, also werde ich dir diese geben!

1
Mark Hernandez

Als Referenz können Sie auch initWithDictionary verwenden, um NSMutableDictionary mit einem Literal zu initialisieren:

NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{
    @"touch": @0,
    @"app": @0,
    @"back": @0,
    @"volup": @0,
    @"voldown": @0
}];
0
Topher Fangio