2013-08-02 57 views
0

我有兩個表說論文和作者。每篇文章有許多作者,同一作者可以有多篇文章。我的Json響應看起來像這樣。關係映射Restkit

{ 
    "Articles": [ 
     { 
      "artName": "ABC", 
      "artId": "1", 
      "Authors": [ 
       { 
        "autName": "James", 
        "autId": "200", 
        "email": "[email protected]" 
       }, 
       { 
        "autName": "Mark", 
        "autId": "201", 
        "email": "[email protected]" 
       }, 
       { 
        "autName": "Robert", 
        "autId": "202", 
        "email": "[email protected]" 
       } 
      ] 
     }, 
     { 
      "artName": "BCD", 
      "artId": "2", 
      "Authors": [ 
       { 
        "autName": "James", 
        "autId": "200", 
        "email": "[email protected]" 
       }, 
       { 
        "autName": "Ben", 
        "autId": "204", 
        "email": "[email protected]" 
       }, 
       { 
        "autName": "Rayon", 
        "autId": "205", 
        "email": "[email protected]" 
       } 
      ] 
     } 
    ] 
} 

映射:

RKObjectManager *manager = [[RestKit sharedDataManager] objectManager]; 
    RKEntityMapping *ArticleMapping = [RKEntityMapping mappingForEntityForName:@"Articles" inManagedObjectStore:manager.managedObjectStore]; 
    ArticleMaping.identificationAttributes = @[@"artId"]; 
    ArticleMaping addAttributeMappingsFromDictionary:@{ 
    @"artId": @"artId", 
    }]; 


    RKEntityMapping *AuthorMapping = [RKEntityMapping mappingForEntityForName:@"Authors" inManagedObjectStore:manager.managedObjectStore]; 
    AuthorMapping.identificationAttributes = @[@"autId"]; 

AuthorMapping addAttributeMappingsFromDictionary:@{ 
    @"autId": @"autId", 
@"autName" : @"autName", 
@"email" : @"email" 

    }]; 


[ArticleMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"Authors" toKeyPath:@"Authors" withMapping:AuthorMapping]]; 

我已經做了論文和作者的關係。它映射正確,但是當我嘗試爲「artName」ABC獲取作者時。我只有兩位作者。但是當我嘗試爲「artName」BCD獲取數據時。我得到3位作者。當在DB中檢查時,記錄「James」的關係密鑰被BCD記錄覆蓋。

我如何可以訪問兩個文章的所有作者。

注:我使用Restkit 0.20

謝謝

+0

的關係是多對多的數據模型? – Wain

+0

是的..我使用多對多在DB模式 –

回答

1

的兩個對象之間的關係必須是多對多的或新的分配將明確地打破舊的分配。

當您創建RKRelationshipMapping時,請確保將assignmentPolicy設置爲RKUnionAssignmentPolicy。默認值是RKSetAssignmentPolicy,這可能會刪除現有設置。

+0

感謝您answer..will檢查 –

+0

以上回答是否trick..Thanks –