Атрибут первичного ключа RestKit - PullRequest
7 голосов
/ 19 ноября 2011

Загружаю данные из файла 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 ]

1 голос
/ 29 июля 2014

Начиная с последней версии RESTKit (0.23.2) вы можете определить первичный ключ следующим образом:

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

Принимая во внимание, что objectId - это ваш первичный ключ для основного объекта данных.

1 голос
/ 19 ноября 2011

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

...