Restkit: сделать конкретное сопоставление с подполем "fields.attr" в поле "attr" - PullRequest
1 голос
/ 19 октября 2011

Привет, мне нужны советы, чтобы узнать, возможно ли то, что я пытаюсь сделать.

У меня есть эта модель данных:

@interface Accommodation : NSManagedObject {
@private
}

@property (nonatomic, retain) NSNumber * AccommodationId;
@property (nonatomic, retain) NSSet *photo_set;

И я получаю следующий поток Json (созданный Django):

[
  {
    "pk": 13570, 
    "model": "catalog.accommodation", 
    "fields": {
        "thematics": [
            3, 
            15, 
            48, 
            61
        ], 
        "code": "code_acc_12", 
        "booking_url": null,
        "photo_set": [
            {
                "pk": 58346, 
                "model": "gallery.photo", 
                "fields": {
                    "url": "http:www.google.com", 
                    "type": "main", 
                    "label": ""
                }
            }
        ], 

    }
  }
]

Когда я пытаюсь отобразить fields.photo_set в photo_set:

    [accommodationMapping mapRelationship:@"fields.photo_set" withMapping:photoMapping];

Я получаю знаменитое:

    Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Accommodation 0x5c6afa0> valueForUndefinedKey:]: the entity Accommodation is not key value coding-compliant for the key "AccommodationId".'

Мой вопрос: «Можно ли сделать то, что я пытаюсь сделать?»

Спасибо за вашу помощь!

PS: Это мои правила отображения:

RKManagedObjectMapping* photoMapping = [RKManagedObjectMapping mappingForClass:[Photos class] ];
photoMapping.primaryKeyAttribute = @"PhotoId";
[photoMapping mapKeyPath:@"pk" toAttribute:@"PhotoId"];
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:photoMapping];    

RKManagedObjectMapping* accommodationMapping = [RKManagedObjectMapping mappingForClass:[Accommodation class]];
accommodationMapping.primaryKeyAttribute = @"AccommodationId";
[accommodationMapping mapKeyPath:@"pk" toAttribute:@"AccommodationId"];
[accommodationMapping mapKeyPath:@"fields.code" toAttribute:@"code"];
[accommodationMapping mapRelationship:@"fields.photo_set" withMapping:photoMapping];
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:accommodationMapping];
...