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 获取最新添加的数据

Magical Girl Haze 南京网络赛2018

需要根据某个关键字过滤掉Kafka Records

如何将 setReturnsDistinctResults 与 Magical Record 一起使用?

如何模拟Delphi records中的位域