Ich bin Mapping JSON-formatierte Daten von einem Webserver zu Objective C-Klassen (NSManagedObjects modelliert in Xcode, behandelt von Core Data). Für jedes Attribut der Objective C-Klasse, ich brauche, um:
- Ermitteln, ob der Schlüssel des Attributs im JSON-Objekt vorhanden ist,
- Feststellen, ob der Wert für diesen Schlüssel nicht null ist, und
- Übergabe des Wertes an die modellierte Klasseninstanz, wenn die Bedingungen 1 und 2 erfüllt sind
Im Moment bin ich hard-coding diese Sequenz für jedes der Attribute, so dass jedes Attribut braucht Code wie die folgenden:
// dictObject is the JSON object converted into a NSDictionary,
// and person is the instance of the modeled class
if ([dictObject objectForKey:@"nameFirst"] &&
[dictObject objectForKey:@"nameFirst"] != [NSNull null]) {
person.nameFirst = [dictObject objectForKey:@"nameFirst"];
}
Neben dem Erfordernis einer Los des Codes, um die verschiedenen Klassen zu handhaben, scheint dies unausgereift und brüchig zu sein: jede Namensänderung (oder Sprachlokalisierung) würde dazu führen, dass das Mapping fehlschlägt.
Es muss doch einen besseren Weg geben... was übersehe ich?