我有两个实体“父”和“子”。父实体与子实体具有一对多关系,子实体与父实体具有一对一关系,“父”实体具有我每次映射的唯一 ID(主键属性)。
当我调用 API 时,响应是这样的
{
"parent": {
"ss": "1",
"uid": 200,
"me": "Successfully Retrieved",
"pn": 2,
"cl": [
{
"cid": 1500,
"cn": "XYZ"
},
{
"cid": 1501,
"cn": "ABC"
}
]
}
}
以上响应已成功映射到数据库。我可以通过 [parent.childs allObjects] 访问它返回两个对象。
我有一个加载更多功能,它调用相同的 api 和页码递增 1,并且我得到与上面类似的响应(3 个对象)。但是当我尝试从数据库获取数据时,我只得到最新响应的 3 个对象。我之前映射的两个对象的关系变为空。所以我无法访问所有对象。我如何通过关系访问数据库中的所有数据。
这就是我的映射方式
RKObjectManager *manager = [[RestKit sharedDataManager] objectManager];
RKEntityMapping *parentMapping = [[MFResponseMapper sharedInstance]parentMapper]; //Primary key is mapping here
RKEntityMapping *childMapping = [[MFResponseMapper sharedInstance]childMapper]; //Child name and Id is mapping here.
[parentMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"cl"
toKeyPath:@"childs"
withMapping:childMapping]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:parentMapping
pathPattern:nil
keyPath:@"parent"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[manager addResponseDescriptor:responseDescriptor];
注意:我有模型中父子(一对多)关系的删除规则。
谢谢
最佳答案
在关系映射上,将 assignmentPolicy
设置为 RKUnionAssignmentPolicy
。
关于ios - 更新数据库时核心数据关系中断 - Restkit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18865470/