我有一个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上的用户信息:
https://i.stack.imgur.com/nAWfi.png
另外请注意,我已经在reportTypes关系的用户信息中将mappedKeyName
键设置为"reportTypes.reportType"
。
为什么嵌套对象映射不正确?
这是Magical Records/Magical Import(截至2012年9月7日的主分支)中的一个错误。
目前,魔法记录确实支持通过KVC路径映射属性。但是,它不支持通过KVC路径映射关系。
我已经在本地分支中解决了这个问题,我将放入一个pull请求,将其合并到master中。
FYI--
问题是第129行附近的NSManagedObject+MagicalDataImport.m。这行错了:
id relatedObjectData = [relationshipData valueForKey:lookupKey];
实际上应该是:
id relatedObjectData = [relationshipData valueForKeyPath:lookupKey];