2011-11-19 7 views
7

jsonファイルからデータをロードして保存します。 私はそれを2回行います... 私はCore Data sqliteデータベースに2つのエントリを持っています。 マッピングに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

関連する問題