如何解决我应该如何将Core Data实体与RestKit结合使用?
| 我有两个Core Data实体(Client
和UserFile
),它们之间已经成功建立了关系。
我为两个实体都创建了类,并将它们设为RKManagedObject
的子类。
创建新的UserFile
时,我想将其正确地与Client
关联。这是我正在做的事情:
Client *client = [Client objectWithPrimaryKeyValue:@\"1\"];
UserFile *file = [UserFile object];
file.client = client;
file.clientId = client.clientId;
[[RKObjectManager sharedManager] postObject:file delegate:self];
似乎我必须分配file.clientId
,以便将正确的参数发送到服务器(如果我仅分配file.client
,则提交的client_id
为空白)。
似乎我必须分配ѭ7来防止创建新的空ѭ0并将其与文件关联(需要客户关系)。
它是否正确?我真的必须同时分配外键和实际实体吗?对我来说,这似乎有点多余,但是我很高兴地承认我缺乏Core Data和RestKit的知识!
解决方法
要回答您的问题,目前看来您确实需要同时执行两个步骤。这是库随附的RKDiscussionBoardExample中的代码:
DBTopic* topic = [[DBTopic findFirstByAttribute:@\"topicID\" withValue:topicID] retain];
_post = [[DBPost object] retain];
_post.topicID = topic.topicID;
_post.topic = topic;
因此,在示例中关系可能未正确设置,或者您确实需要两个步骤。
此外,您应该使用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\",nil];
[userFileMapping mapRelationship:@\"client\" withObjectMapping:clientMapping];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。