参考 id 的 RestKit 映射对象

Posted

技术标签:

【中文标题】参考 id 的 RestKit 映射对象【英文标题】:RestKit mapping object with reference to id 【发布时间】:2012-06-06 11:34:05 【问题描述】:

我有一个对象 OrganizationalUnit,它通过 parentId 属性链接到父实体。 OrganizationalUnit 还有一个主键属性 ouId(映射自 JSON“_id”字段)。

这是我的代码:

RKManagedObjectMapping *ouMapping = [RKManagedObjectMapping mappingForClass:[OrganizationalUnit class] inManagedObjectStore:manager.objectStore];
[ouMapping mapAttributes:@"name",@"type", nil];
[ouMapping mapKeyPath:@"_id" toAttribute:@"ouId"];
[ouMapping setPrimaryKeyAttribute:@"ouId"];

[ouMapping mapKeyPath:@"parent" toAttribute:@"parentId"];

[ouMapping hasOne:@"parent" withMapping:ouMapping];
[ouMapping connectRelationship:@"parent" withObjectForPrimaryKeyAttribute:@"parentId"];

这与 RestKit 中的示例的工作方式相同:

RKManagedObjectMapping* taskMapping = [RKManagedObjectMapping mappingForClass:[Task class] inManagedObjectStore:objectStore];
taskMapping.primaryKeyAttribute = @"taskID";
[taskMapping mapKeyPath:@"id" toAttribute:@"taskID"];
[taskMapping mapKeyPath:@"name" toAttribute:@"name"];
[taskMapping mapKeyPath:@"assigned_user_id" toAttribute:@"assignedUserID"];
[objectManager.mappingProvider setMapping:taskMapping forKeyPath:@"task"];

// Hydrate the assignedUser association via primary key
[taskMapping hasOne:@"assignedUser" withMapping:userMapping];
[taskMapping connectRelationship:@"assignedUser" withObjectForPrimaryKeyAttribute:@"assignedUserID"];

应该在本地创建基于 id 的对象之间的关系。

不幸的是,在运行时,当接收数据的实际映射发生时,我得到了错误:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x6d9c6f0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key _id.'

有什么想法吗?

【问题讨论】:

您可以发布您尝试映射的 JSON 吗?我在使用 RestKit 时遇到过类似问题,可能正在寻求解决方案(请参阅 ***.com/questions/13054112/…) 【参考方案1】:

我想我已经找到了问题的根源,可能是由于孩子们无法参考父母,因为他们还不存在。

【讨论】:

以上是关于参考 id 的 RestKit 映射对象的主要内容,如果未能解决你的问题,请参考以下文章

RestKit:将单个对象映射到现有数组

来自 JSON 的 RestKit 对象映射

JSOG API 对象的 RestKit 映射

RestKit 中的嵌套对象映射

JSON 对象映射 - RestKit

Restkit - 只有子 ID 的映射