我应该如何关联Core Data实体以与RestKit一起使用?

nfm*_*nfm 11 cocoa core-data ios restkit

我有两个核心数据实体(ClientUserFile),我已经成功建立了它们之间的关系.

我为两个实体创建了类,并使它们成为子类RKManagedObject.

当我创建一个新的UserFile,我想正确地将它与a关联Client.这是我正在做的事情:

Client *client = [Client objectWithPrimaryKeyValue:@"1"];
UserFile *file = [UserFile object];
file.client = client;
file.clientId = client.clientId;
[[RKObjectManager sharedManager] postObject:file delegate:self];
Run Code Online (Sandbox Code Playgroud)

好像我必须分配,file.clientId以便将正确的参数发送到服务器(如果我只分配,file.client则提交的client_id是空白).

好像我必须分配file.client以防止Client创建一个新的空,并与文件关联(需要客户端关系).

它是否正确?我真的必须同时分配外键和实际实体吗?这对我来说似乎有点多余,但我很高兴地承认我的核心数据和RestKit知识缺乏!

Eva*_*ell 9

要回答您的问题,您现在看起来确实需要执行这两个步骤.以下是库中包含的RKDiscussionBoardExample的代码:

DBTopic* topic = [[DBTopic findFirstByAttribute:@"topicID" withValue:topicID] retain];
_post = [[DBPost object] retain];
_post.topicID = topic.topicID;
_post.topic = topic;
Run Code Online (Sandbox Code Playgroud)

因此,在示例中没有正确设置关系,或者您确实需要这两个步骤.

此外,您应该使用最新版本的RestKit,它具有不同的对象映射器并弃用RKManagedObject.你的人际关系应该是这样的:

RKManagedObjectMapping* clientMapping = [RKManagedObjectMapping mappingForClass: [Client class]];
clientMapping.primaryKeyAttribute = @"clientID";
[clientMapping mapKeyPathsToAttributes:
@"id", @"clientID",
nil];

RKManagedObjectMapping* userFileMapping = [RKManagedObjectMapping mappingForClass:[UserFile class]];
userFileMapping.primaryKeyAttribute = @"userFileID";
[userFileMapping mapKeyPathsToAttributes:
 @"id", @"userFileID",
 @"client_id", @"clientID",
 nil];

[userFileMapping mapRelationship:@"client" withObjectMapping:clientMapping];
Run Code Online (Sandbox Code Playgroud)