Magical Records - 如何使用关键路径映射关系?
Posted
技术标签:
【中文标题】Magical Records - 如何使用关键路径映射关系?【英文标题】:Magical Records - How to map relationships using key path? 【发布时间】:2012-09-07 06:31:47 【问题描述】:我有一个NSManagedObjectModel
子类,名为AOStartup。我正在接收其中包含嵌套对象的 XML,我称之为 AOReportType。在我的 AOStartup 对象上,我有一个名为 reportTypes 的一对多关系,它的目的地是 AOReportType 和一个反向关系集。
我正在将 XML 解析为 NSDictionary
(它会创建 AOReportType 数据内容的内部数组),然后使用以下方法将其映射到 AOStartup 对象:
[startup importValuesForKeysWithObject:dictionary];
所有属性映射正确。但是,关系映射不正确。
这是相关的NSDictionary
代码(从控制台日志复制并粘贴):
reportTypes =
reportType = (
"_id" = 727;
backgroundColor = FFFFFF;
mayCreate = false;
name = "Animal Codes";
navBarColor = 350000;
referenced = false;
reportName = Code;
reportVersion = 0;
,
"_id" = 718;
backgroundColor = FFFFFF;
mayCreate = false;
name = "Business License Codes";
navBarColor = 350000;
referenced = false;
reportName = Code;
reportVersion = 0;
,
这是 reportTypes 关系及其在模型对象构建器中 AOStartup 上的用户信息的屏幕截图:
http://i.stack.imgur.com/nAWfi.png
另请注意,我已在 reportTypes 关系的用户信息中将 mappedKeyName
键设置为 "reportTypes.reportType"
。
为什么嵌套对象映射不正确?
【问题讨论】:
嗯...问题是什么? 问题是“为什么没有根据上面的字典自动映射关系?”我已经弄清楚了(这是魔法导入中的一个错误)。请参阅下面的答案。 尽量在问题框的开头简洁地提出问题,然后再详细说明。 【参考方案1】:这是 Magical Records / Magical Import 中的一个错误(截至 2012 年 9 月 7 日的主分支)。
目前,魔法记录确实支持通过 KVC 路径映射属性。但是,它不支持 KVC 路径的映射关系。
我已经在我的本地分支中修复了这个问题,我将提出一个拉取请求以将其合并到 master 中。
仅供参考--
问题在于第 129 行附近的 NSManagedObject+MagicalDataImport.m。这一行是错误的:
id relatedObjectData = [relationshipData valueForKey:lookupKey];
实际上应该是:
id relatedObjectData = [relationshipData valueForKeyPath:lookupKey];
【讨论】:
仅供参考:对于像我一样来到此页面的新用户:这不是实际的。如果您使用的是新版本 - 不用担心。这个错误已经修复了。以上是关于Magical Records - 如何使用关键路径映射关系?的主要内容,如果未能解决你的问题,请参考以下文章
Magical Records:加载要在本地上下文中更新的记录
我正在尝试从 Magical Records 获取最新添加的数据