2009-07-12 6 views
28

Gibt es eine effizientere Möglichkeit, Objekte zu einem NSMutable Dictionary hinzuzufügen als einfache Iteration?NSMutable Dictionary Objekte hinzufügen

Beispiel:

// Create the dictionary 

NSMutableDictionary *myMutableDictionary = [NSMutableDictionary dictionary];  

// Add the entries 

[myMutableDictionary setObject:@"Stack Overflow" forKey:@"http://stackoverflow.com"]; 
[myMutableDictionary setObject:@"SlashDotOrg" forKey:@"http://www.slashdot.org"]; 
[myMutableDictionary setObject:@"Oracle" forKey:@"http://www.oracle.com"]; 

Einfach nur neugierig, ich bin sicher, dass dies der Weg ist, es zu tun ist.

Antwort

15

Wenn Sie alle Objekte und Schlüssel vorher können Sie es initialisieren NSDictionary die Verwendung:

dictionaryWithObjects:forKeys: 

Natürlich dies wird Ihnen unveränderlich Wörterbuch nicht wandelbar geben. Es hängt von Ihrer Nutzung, welche Sie benötigen, können Sie eine änderbare Kopie von NSDictionary bekommen können, aber es scheint einfacher, nur um Ihren ursprünglichen Code in diesem Fall zu verwenden:

NSDictionary * dic = [NSDictionary dictionaryWith....]; 
NSMutableDictionary * md = [dic mutableCopy]; 
... use md ... 
[md release]; 
+0

Vielen Dank für die zweite Meinung. Ich wollte nur sicher sein, dass ich nichts vermisste und ob es etwas effizienteres/Eleganteres gab. – djt9000

+0

Ich war auch auf der Suche nach einer Option, um NSMutableDictionary mit Objekten und Schlüsseln zu initialisieren, wie Sie für NSDictionary tun können, aber ich kann nichts finden ... – stefanB

20
NSDictionary *entry = [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithDouble:acceleration.x], @"x", 
    [NSNumber numberWithDouble:acceleration.y], @"y", 
    [NSNumber numberWithDouble:acceleration.z], @"z", 
    [NSDate date], @"date", 
    nil]; 
+0

das half mir ty :) – grilix

8

Erlauben Sie mir einige Informationen zu Personen hinzufügen das fängt an.

Es ist möglich, eine NSDictionary mit freundlicher Syntax mit objective-c literals zu erstellen:

NSDictionary *dict = @{ 
    key1 : object1, 
    key2 : object2, 
    key3 : object3 }; 
+0

sollten Sie die Liste mit einem Null beenden? – vvMINOvv

+2

@vvMINOvv Keine Notwendigkeit :). Das gleiche gilt für NSArrays Literale :) –

0
NSMutableDictionary *example = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@5,@"burgers",@3, @"milkShakes",nil]; 

Die Objekte kommen, bevor die Tasten.