2010-04-13 6 views
6

Für meine iPhone-App, ich konsumiere einen RESTful Service und JSON. Ich habe Bibliotheken gefunden, die dies in ein NSDictionary deserialisieren. Ich frage mich jedoch, ob es Bibliotheken gibt, die JSON/NSDictionary/Property List in mein Objekt (ein beliebiges auf meiner Seite) deserialisieren.Objekt-Mapping in Objective-C (Iphone) von JSON

Das Java-Äquivalent wäre die objektrelationale Mapper, obwohl die Art der Objekt-Mapping, die ich suche, relativ einfach ist (einfache Datentypen, keine komplexen Beziehungen, etc.).

Ich habe bemerkt, dass Objective-C eine Introspektion hat, also scheint es theoretisch möglich, aber ich habe keine Bibliothek gefunden, um das zu tun.

Oder gibt es eine einfache Möglichkeit, ein Objekt aus einem NSDictionary/Property List-Objekt zu laden, das nicht jedes Mal geändert werden muss, wenn sich das Objekt ändert?

Zum Beispiel:

{ "id" : "user1", 
    "name" : "mister foobar" 
    "age" : 20 } 

wird in Objekt geladen

@interface User : NSObject { 
NSString *id; 
NSString *name; 
int *age; 
} 
+0

Alter nicht Sternchensymbol, weil es eine ganze Zahl –

Antwort

5

Werfen Sie einen Blick auf das NSKeyValueCoding Protokoll. Insbesondere die Methoden setValuesForKeysWithDictionary: und dictionaryWithValuesForKeys:

+0

Awesome. Danke Paul. Ich wusste nicht, dass NSObject diese Art von Protokoll unterstützt. Ich kann jetzt meinen eigenen einfachen Mapper schreiben. – pschang

1

Werfen Sie einen Blick auf das Projekt Loid auf Sourceforge. Meine Absicht ist, zu liefern, worüber du sprichst.

Im Moment kann das Framework eine Metabeschreibung zu einem Objekt (z. B. Ihr "Benutzer" -Objekt) zurückentwickeln und zu und von einem LoidTypeData-Objekt serialisieren. Meine Absicht ist es, eine LoidTypeData-Instanz aus einem eingehenden JSON-Block zu erstellen und dann an das Objekt zu binden. Natürlich wird auch das Gegenteil der Fall sein.

Es ist Open Source und GPL. Sie müssen im Moment auf den Code von SVN zugreifen, ich weiß nicht, wie man Distro für Mac erstellt.

- Frank

Verwandte Themen