見我的其他問題背景:Will RestKit's dynamic mapping solve this complex JSON mapping?餵養解析數據RKMapperOperation拋出NSUnknownKeyException
由於路服務器的結構,我需要轉換成NSManagedObject
S中的JSON數據,我傳遞解析JSON做直接對象映射,像這樣:
RKObjectMapping *mapping = [RKObjectMapping requestMapping];
[mapping addAttributeMappingsFromDictionary:@{@"id": @"id", @"name": @"name"}];
NSDictionary *mappingsDictionary = @{ [NSNull null]: mapping };
RKMapperOperation *mapper = [[RKMapperOperation alloc]
initWithRepresentation:dataArray mappingsDictionary:mappingsDictionary];
NSError *mappingError = nil;
BOOL isMapped = [mapper execute:&mappingError];
if (isMapped && !mappingError) {
for (id thing in mapper.mappingResult.array) {
NSLog(@"Mapped the '%@' thing: %@", NSStringFromClass([thing class]), thing);
}
}
的NSMutableArray裏,dataArray中,看起來是這樣的:[ {id: 1, "name":"AAA"}, {id: 2, "name":"BBB"}, ...]
和代碼打印出了一些字典,但什麼我想要的是從我的數據模型類生成的Foo對象(.id &.name)。
如果我使用:
RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Foo" inManagedObjectStore:store];
在店裏工作以及它成功的「正常」 RestKit要求,我得到的錯誤:
終止應用程序由於未捕獲的異常「NSUnknownKeyException」,原因:'[valueForUndefinedKey:]:實體(null)不是關鍵字「id」的關鍵字編碼標準。
我在做什麼錯?
UPDATE:
繼北斗星的意見,我說:
RKManagedObjectMappingOperationDataSource *mappingDS = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:store.mainQueueManagedObjectContext cache:store.managedObjectCache];
mappingDS.operationQueue = [NSOperationQueue new];
上面的代碼之前,然後創建映射後,並呼籲execute
之前,我設置數據源,如建議:
mapper.mappingOperationDataSource = mappingDS;
而且我得到預期的NSManagedObject
s。
這樣做的竅門,謝謝! –