Frage

Ich habe ein Wörterbuch der Wörterbücher, die im JSON-Format

mir zurückgegeben wird
{
    "neverstart": {
        "color": 0, 
        "count": 0, 
        "uid": 32387, 
        "id": 73129, 
        "name": "neverstart"
    }, 
    "dev": {
        "color": 0, 
        "count": 1, 
        "uid": 32387, 
        "id": 72778, 
        "name": "dev"
    }, 
    "iphone": {
        "color": 0, 
        "count": 1, 
        "uid": 32387, 
        "id": 72777, 
        "name": "iphone"
    }
}

Ich habe auch eine NSArray die IDs für ein Element benötigt enthält. z.B. [72777, 73129]

Was muss ich tun, um in der Lage ist, ein Wörterbuch von id erhalten => Name für die Elemente im Array. Ich weiß, das durch Iteration durch das Array möglich ist, und dann durch alle Werte im Dictionary Looping und Werte überprüft, aber es scheint, wie es sollte es eine weniger umständliche Methode, dies zu tun.

Entschuldigen Sie meine Unwissenheit, wie ich gerade versuche, meinen Weg um das iPhone SDK und das Lernen Objective-C und Cocoa zu finden.

War es hilfreich?

Lösung

Zunächst einmal, da Sie JSON verwenden, ich hoffe, Sie haben festgestellt, bereits BSJSONAdditions und / oder json-Rahmen , beide Open-Source-Projekte für Parsen für Sie JSON in native Cocoa-Strukturen. diese Blog-Post gibt eine Vorstellung von wie diese verwenden, um eine NSDictionary aus einem JSON-String zu erhalten.

Das Problem wird dann ein die passenden Werte im Wörterbuch zu finden. Ich bin mir nicht bewusst eine einzige Methode, die das tut, was Sie suchen - die Cocoa-Frameworks sehr mächtig sind, sind jedoch so konzipiert, dass sehr allgemein und flexibel. Allerdings sollte es nicht allzu schwierig sein, zusammen zu stellen, in nicht zu vielen Linien ... (Da Sie auf dem iPhone sind Programmierung, werde ich schnell Aufzählung verwenden, um den Code sauberer zu machen.)

NSDictionary* jsonDictionary = ...
NSDictionary* innerDictionary;
NSArray* requiredIDs = ...
NSMutableDictionary* matches = [NSMutableDictionary dictionary];
for (id key in jsonDictionary) {
    innerDictionary = [jsonDictionary objectForKey:key];
    if ([requiredIDs containsObject:[innerDictionary objectForKey:@"id"]])
        [matches setObject:[innerDictionary objectForKey:@"name"]
                    forKey:[innerDictionary objectForKey:@"id"]];
}

Dieser Code kann Fehler haben, aber die Konzepte sollten gesund sein. Beachten Sie auch, dass der Anruf ein Autoreleased Objekt [NSMutableDictionary dictionary] zurückkehren wird.

Andere Tipps

Haben Sie versucht, diese NSDictionary Methode:

+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys

Drews bekam die Antwort ... Ich fand, dass die GCC Handbuch für die NSDictionary hilfreich in einem Barebone-Weg der andere Tag, als ich eine ähnliche Frage hatte.

http://www.gnustep.org/resources /documentation/Developer/Base/Reference/NSDictionary.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top