Вложенные объекты Core Data, загруженные Restkit, вызывают исключение NSObjectInaccessibleException

Я использую RestKit для получения объектов из моей службы RoR и использую CoreData для сохранения некоторых объектов (больше объектов таблицы поиска статического типа). TasteTag - один из таких постоянных объектов:

#ifdef RESTKIT_GENERATE_SEED_DB
    NSString *seedDatabaseName = nil;
    NSString *databaseName = RKDefaultSeedDatabaseFileName;
#else
    NSString *seedDatabaseName = RKDefaultSeedDatabaseFileName;
    NSString *databaseName = @"Model.sqlite";
#endif

RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:kServerURL];  
manager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:databaseName usingSeedDatabaseName:seedDatabaseName managedObjectModel:nil delegate:self];

.. lots of fun object mapping ..

 RKManagedObjectMapping* tasteTagMapping = [RKManagedObjectMapping mappingForClass:[TasteTag class]];
[tasteTagMapping mapKeyPath:@"id" toAttribute:@"tasteTagID"];
[tasteTagMapping mapKeyPath:@"name" toAttribute:@"name"];
tasteTagMapping.primaryKeyAttribute = @"tasteTagID";
[[RKObjectManager sharedManager].mappingProvider setMapping:tasteTagMapping forKeyPath:@"taste_tags"]; 
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:tasteTagMapping];

.. some more mapping ..

У меня есть данные, возвращаемые с сервера RoR, и они отображаются на объекты, как и ожидалось. Сущность Core Data также кажется нормально отображаемой после того, как RestKit получает запрос обратно:

" (entity: TasteTag; id: 0x6e85d60  ; data: )"

Проблема заключается в том, что когда я пытаюсь получить доступ к свойствам объектов, сбой не может казаться возгоранием. Сначала я просто вызывал свойства, которые всегда возвращались как nil (хотя это должно было вызвать ошибку):

for (TasteTag *tag in self.vintage.tasteTags) {
    [tagNames addObject:tag.name]; //get error of trying to add nil to array   
}

После изучения вручную запускаемых ошибок ( http://www.mlsite.net/blog/ ? p = 518 ) Я попытался вызвать [tag willAccessValueForKey: nil] , что привело к:

Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x6e7b060 ''

Поиск объекта в .sqlite на основе ключа (TasteTag / p5) показывает его сопоставлен с тем, что я ожидал.

В других сообщениях, касающихся RestKit, рекомендуется отключить кеш объектов (который я не использую), поскольку обычно это вызвано удалением объекта. Но на данном этапе я просто читаю, а не удаляю, и у меня нет кеша.

Если я просто позвоню [TasteTag allObjects] , я смогу вернуть все объекты обратно, и они загрузятся без проблем. Просто в том случае, когда они, кажется, виноваты.

6
задан Parrots 12 January 2012 в 17:56
поделиться