2011-11-19 4 views
7

json 파일에서 데이터를로드하고 저장합니다. 두 번 해 ... 내 핵심 데이터 sqlite 데이터베이스에 두 개의 항목이 있습니다. 매핑에 primaryKeyAttribute를 설정하더라도.RestKit 기본 키 속성

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

내 JSON

{ "MyEntity": [{ "코드": "axv2", "데이터" "콘텐츠"}]};

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

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

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

내 엔티티가 올바르게 매핑 ...하지만 Restkit 하나가 동일한 기본 키를 사용하여 중복 된 항목을 저장할 수 있습니다 : 여기 콜백

?

이상하게 들리지만,이 기본 키 특성이이 문제를 피할 수 있다는 것을 이해했습니다.

답변

1

:

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

OBJECTID는 핵심 데이터 개체에 대한 기본 키는 당신에게 반면.

1

아니요. 핵심 데이터가 자체 키를 유지하므로 사실이 아닙니다. 기본 키가 있는지 확인하고 해당 엔터티 인스턴스를 저장하기 전에이 문제를 쉽게 해결할 수 있습니다. 최신 RESTKit 버전 (0.23.2)이 같은 기본 키를 정의 할 수 있습니다의로

+0

그렇다면 컨텍스트를 저장할 때마다 엔티티가 sqlite db에 있는지 확인하기 위해 관리 컨텍스트의 각 엔티티를 반복해야합니다. Restkit은 무언가를 제공하지 않습니까? 아니면 핵심 데이터? – Sam

+1

기본적으로 그렇습니다. 또는 새 항목을 만들기 전에 데이터베이스에서 가져옵니다. 가져 오기가 비어있는 경우 다시 만들어야합니다. 그렇지 않으면 관리 대상 객체 컨텍스트에 삽입하지 마십시오. 나는 이런 식으로했고 그것은 아주 효율적입니다. – Mundi

+1

중복과 동일한 문제가 있습니다. 그러나 Restkit은 데이터베이스에 삽입되기 전에 검사를 제공하지만 어떤 이유로 든 나와 전화하지 않는 것으로 보입니다. 내가 옳은 대답을 찾을 때까지 내가 어떻게 "일시적으로"해결되었는지 확인하십시오. http://stackoverflow.com/questions/7799890/primarykeyattribute-not-working-restkit-core-data – mateusmaso