RestKit 0.20 映射问题

Posted

技术标签:

【中文标题】RestKit 0.20 映射问题【英文标题】:RestKit 0.20 Mapping problems 【发布时间】:2012-12-21 15:50:36 【问题描述】:

我在发出请求并尝试将响应放入 Core Data 时收到以下错误。

Performing managed object mapping with a nil managed object cache:
Unable to update existing object instances by identification attributes. Duplicate objects     may be created.

我设置了 identifactionAttributes 并使用对象管理器来配置请求操作。而且我仍然收到“无法更新现有对象实例...”

objectMapping = [RKEntityMapping mappingForEntityForName:@"Entity"     inManagedObjectStore:self.managedObjectStore];
            objectMapping.identificationAttributes = @[ @"route_id" ];
            [objectMapping addAttributeMappingsFromDictionary:@
             @"point_alt" : @"point_alt",
             @"point_lat" : @"point_lat",
             @"point_long" : @"point_long",
             @"location_id" : @"location_id",
             @"route_id" : @"route_id"
             ];


NSMutableURLRequest *request = [[RKObjectManager sharedManager] requestWithObject:nil      method:RKRequestMethodPOST path:path parameters:paramsWithEncr];

RKManagedObjectRequestOperation *operation = [[RKObjectManager sharedManager] managedObjectRequestOperationWithRequest:request   managedObjectContext:self.managedObjectStore.mainQueueManagedObjectContext success:^(RKObjectRequestOperation *operation, RKMappingResult *result) 
        NSLog(@"Loading mapping result: %d", result.count);
     failure:^(RKObjectRequestOperation *operation, NSError *error) 
        NSLog(@"Fail!");
    ];

【问题讨论】:

您收到的消息只是一个警告。你只是想摆脱警告吗?还是你有一些更大的问题?好像根本没有对象存储在数据库中? 数据库中没有存储对象... 【参考方案1】:

我没有配置核心数据与对象管理器的集成。如果你有同样的问题,你应该这样做:

NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"];
[managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:nil];
[managedObjectStore createManagedObjectContexts];

【讨论】:

以上是关于RestKit 0.20 映射问题的主要内容,如果未能解决你的问题,请参考以下文章

Restkit 0.20 嵌套对象数组映射问题

RestKit 0.20:映射复杂的动态嵌套 JSON

使用 RestKit 0.20 的对象映射关系

RestKit 0.20 嵌套对象映射问题使用 API

RestKit 0.20 嵌套对象映射(对象树的路径不同)

Restkit 0.20 对象在获取 json 响应后未映射