我正在尝试将一个'Comments'数组映射到一个Comment实体,该实体有一个子实体'testUser',即编写注释的人。只要所有注释的testUsers都是唯一的,一切都可以正常映射。
如果用户写了两条评论,第二条评论将有一个nil testUser对象。 RestKit将第二个注释的testUser映射到与第一个testUser相同的对象,即使它们属于两个单独的注释对象。您可以在下面的映射结果中看到这一点。 我怎样才能避免这种情况发生?
非常感谢。人
// 测试一个映射结果
从keyPath'user'到'testUser'的映射关系对象。 值:(实体:TestUser; id: 0x17e1a070 ;数据:{
comment = "0x17e4d9b0 <x-coredata:///Comment/tC0FCC2A0-6B2A-4130-A711-6E4A983D40F258>";
testFirstName = Sam;
testID = 183599;
testLastName = Doe;
})
// 测试两个映射结果
从keyPath'user'到'testUser'的映射关系对象。 值:(实体:TestUser; id: 0x17e1a070 ;数据:{
comment = "0x15e72aa0 <x-coredata://5038C2F2-93CF-46BF-BB2A-66F2423FA2DE/Comment/p46>";
testFirstName = Sam;
testID = 183599;
testLastName = Doe;
})
// 评论映射结果
2013-11-23 11:45:42.689 app [4619:8333] T restkit.object_mapping:RKMappingOperation.m:722将关键字'item'映射到'items'的NSSet
关系对象。值:
{(
(entity:Comment; id:0x15eb9660; data:{
commentId = 407381;
createdAt = "2013-11-23 10:45:13 +0000";
testUser = "0x17e1a070 <x-coredata://5038C2F2-93CF-46BF-BB2A-66F2423FA2DE/TestUser/p9>";
text = "Test one";
}), (entity:Comment; id:0x17e4d9b0; 数据:{
commentId = 407382;
createdAt = "2013-11-23 10:45:30 +0000";
testUser = nil;
text = "Test two";
}) )}
// 实体
通讯(与之关系) - &gt; 评论(关系为t0) - &gt;的为TestUser
答案 0 :(得分:4)
你没有显示映射,我假设你有一个多对多的关系来支持你想要做的事情。
创建关系映射时,需要将assignmentPolicy
属性设置为RKUnionAssignmentPolicy
。默认策略将使用新连接替换任何现有连接。此策略将合并连接。