RestKit主键属性

时间:2011-11-19 08:26:04

标签: ios json cocoa core-data restkit

我从json文件加载数据,我保存它。 我做了两次...... 我的Core Data sqlite数据库中有两个条目。 即使我在映射中设置了primaryKeyAttribute。

 mapping.primaryKeyAttribute = @"code";
    [mapping mapAttributesFromArray :mappedFields];
    [[RKObjectManager sharedManager].mappingProvider setMapping:mapping forKeyPath:entityName];  

我的Json

  

{“MyEntity”:[{“code”:“axv2”,“data”:“content”}]};

这里是回调:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {

    NSLog(@"Entries loaded %d",[objects count]);
    lastResult = objects;

    for(MyEntity * myEntity in lastResult) {       
        [self saveContext];       
    }
}

我的实体已正确映射...但是Restkit允许使用相同的主键保存重复的条目吗?

这很奇怪,我明白这个主键属性可以避免这个问题。

2 个答案:

答案 0 :(得分:1)

不,情况并非如此,因为Core Data保留了自己的密钥。您可以通过检查主键是否存在以及保存相关实体实例之前轻松解决此问题。

答案 1 :(得分:1)

从最新的RESTKit版本(0.23.2)开始,您可以像这样定义主键:

[_mapping addAttributeMappingsFromDictionary:@{ @"id" : @"objectId", @"name" : @"name" }];
[_mapping setIdentificationAttributes:@[ @"objectId" ]];

而objectId是核心数据对象的主键。