2012-06-08 9 views
5

I JSON-String wie dieses Format haben:Wie ein JSON-Array mit RestKit zur Karte

[{"image":"/0001.jpg","link":"/index.php"}, 
{"image":"/0001.jpg","link":"/index.php"}] 

es keinen Schlüssel in der obersten Ebene hat.

[mapping mapKeyPath:@"image" toAttribute:@"image"]; 

Mapping wie das wird nicht funktionieren, es mir die Fehlermeldung geben:

restkit.object_mapping:RKObjectMapper.m:81 Adding mapping error: Could not find an object mapping for keyPath: '' 

Wie diese Art von json abzubilden?

+0

Ist das das richtige Format für ein JSON-Wörterbuch, dachte ich, es sei formell, einen Schlüssel zur obersten Ebene hinzuzufügen. Ich schätze, es ist nicht dein JSON, mit zu bearbeiten, aber faszinierend. – erran

+2

http://jsonlint.com/ <- einen JSON-Validator gefunden, erscheint, dass es ein gültiges Format ist. : O – erran

+0

Ich habe keinen Weg gefunden, es zu tun. Glücklicherweise habe ich auch Kontrolle über meinen Server und habe den Server so modifiziert, dass er den obersten Schlüssel hinzufügt. –

Antwort

1

Verwenden

[[RKObjectManager sharedManager].mappingProvider addObjectMapping:myObject]; 

Sie sollten überprüfen, "Mapping without KVC" auf Restkit Objektzuordnung Docs. Hier

ist ein Beispiel aus der Dokumentation:

[ 
    { "title": "RestKit Object Mapping Intro", 
     "body": "This article details how to use RestKit object mapping...", 
     "author": { 
      "name": "Blake Watters", 
      "email": "[email protected]" 
     }, 
     "publication_date": "7/4/2011" 
    } 
] 

Und Sie Karte, die wie folgt aus:

// Our familiar articlesMapping from earlier 
RKObjectMapping* articleMapping = [RKObjectMapping mappingForClass:[Article class]]; 
[articleMapping mapKeyPath:@"title" toAttribute:@"title"]; 
[articleMapping mapKeyPath:@"body" toAttribute:@"body"]; 
[articleMapping mapKeyPath:@"author" toAttribute:@"author"]; 
[articleMapping mapKeyPath:@"publication_date" toAttribute:@"publicationDate"]; 

[[RKObjectManager sharedManager].mappingProvider addObjectMapping:articleMapping]; 
+0

hmm, sieht Liste die aktuelle RK-Version hat nicht diese '-addObjectMapping' Methode. Was können wir jetzt machen? Irgendein Update? – boog

+0

Diese Antwort hat 5 Jahre ... nicht auf iOS jetzt entwickeln: C – clopez

0

Für mich war die Lösung:

diese Antwort Descriptor hinzuzufügen, verwenden Sie die Objekt innerhalb des Arrays

[manager addResponseDescriptor:[ObjectInsideTheArray getResponseDescriptor]]; 

und in der Erfolgsantwort

NSArray * Antwort = (NSArray *) [MappingResult Array]; // anstelle von firstObject