RestKit 2.0:映射 - 当不唯一时,第二个权利为nil

时间:2013-11-23 11:57:47

标签: cocoa restkit restkit-0.20

我正在尝试将一个'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

1 个答案:

答案 0 :(得分:4)

你没有显示映射,我假设你有一个多对多的关系来支持你想要做的事情。

创建关系映射时,需要将assignmentPolicy属性设置为RKUnionAssignmentPolicy。默认策略将使用新连接替换任何现有连接。此策略将合并连接。