RestKit 2.0:映射-非唯一时的第二个实体为零
Posted
技术标签:
【中文标题】RestKit 2.0:映射-非唯一时的第二个实体为零【英文标题】:RestKit 2.0 : Mapping - second entitiy nil when not unique 【发布时间】:2013-11-23 11:57:47 【问题描述】:我正在尝试将“评论”数组映射到具有子实体“testUser”的评论实体,即撰写评论的人。只要所有 cmets 的 testUsers 都是唯一的,一切都可以正常映射。
如果用户写了两个 cmets,第二个评论将有一个 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 将 NSSet
关系对象从 keyPath 'items' 映射到 'items'。价值:
(
(实体:评论;id:0x15eb9660;数据:
commentId = 407381;
createdAt = "2013-11-23 10:45:13 +0000";
testUser = "0x17e1a070 <x-coredata://5038C2F2-93CF-46BF-BB2A-66F2423FA2DE/TestUser/p9>";
text = "Test one";
), (实体:评论;id:0x17e4d9b0; 数据:
commentId = 407382;
createdAt = "2013-11-23 10:45:30 +0000";
testUser = nil;
text = "Test two";
) )
// 实体
评论(与 to 有关系)-> Comment(与 t0 有关系)-> TestUser
【问题讨论】:
【参考方案1】:你没有显示映射,我假设你有一个多对多的关系来支持你正在尝试做的事情。
创建关系映射时,您需要将assignmentPolicy
属性设置为RKUnionAssignmentPolicy
。默认策略将任何现有连接替换为新连接。此策略将合并连接。
【讨论】:
以上是关于RestKit 2.0:映射-非唯一时的第二个实体为零的主要内容,如果未能解决你的问题,请参考以下文章
Restkit/Core Data 关系映射,实体到相同类型的实体(父/子)