2012-11-27 79 views
0

我有以下的JSONRestKit直接foregin键映射

{ 
    ... 
    "users": [ 
      { 
       "name": "Username 1" 
       "id": "uid1", 
      }, 
      { 
       "name": "Username 2", 
       "id": "uid2",     
       "userCreator": "uid1" 
      }, 
      { 
       "name": "Username 3", 
       "id": "uid3", 
       "userCreator": "uid1" 
      } 
     ] 
} 

而在CoreData,在用户类(属性名为id,名)我有类用户一个一对多的关系命名userCreator

现在我需要映射JSON的关系,我想

RKManagedObjectMapping * mapping = [RKManagedObjectMapping mappingForClass:[User class] inManagedObjectStore:[RKManagedObjectStore defaultObjectStore]]; 

mapping.primaryKeyAttribute = @"id"; 
[mapping mapAttributes:@"id", @"name", nil]; 

RKManagedObjectMapping * userCreatorMapping = [RKManagedObjectMapping mappingForClass:[User class] inManagedObjectStore:[RKManagedObjectStore defaultObjectStore]]; 
userCreatorMapping.primaryKeyAttribute = @"id"; 
[userCreatorMapping mapAttributes:@"id", nil]; 

//[mapping hasOne:@"userCreator" withMapping:userCreatorMapping]; 
[mapping mapRelationship:@"userCreator" withMapping:userCreatorMapping]; 
[mapping connectRelationship:@"userCreator" withObjectForPrimaryKeyAttribute:@"id"]; 

哪个不工作的权利,生产

... 
"users":[{ 
      "id":"uid1", 
      "name":"Username 1" 
     }, 
     { 
      "id":"uid2", 
      "name":"Username 2", 
      "userCreator":{"id":"uid1"} // wanted "userCreator":"uid1", 
     }... 

回答

0

看来违规线

userCreatorMapping.primaryKeyAttribute = @"id"; 
// ... 
[mapping connectRelationship:@"userCreator" 
    withObjectForPrimaryKeyAttribute:@"id"]; 

虽然我不使用RK,似乎很明显,你讲的不是什么userCreatorMapping映射到什么。你只是在两边给"id"

+0

我的设置是正确的,我将userCreator中的对象映射到属性id,它被设置为主属性,userCreator中的对象只是一个字符串,它代表了编号 –

+0

然后,您必须将映射完全删除。然后你会得到字符串。 – Mundi