使用 MagicalRecord 导入数据

Posted

技术标签:

【中文标题】使用 MagicalRecord 导入数据【英文标题】:Importing data with MagicalRecord 【发布时间】:2013-08-09 13:38:50 【问题描述】:

我遇到了一个奇怪的错误(EXC_BAD_ACCESS by CFStringGetLength within NSManagedObject(MagicalRecord)MR_executeFetchRequest:inContext:) 尝试从 JSON 文件导入数据时我无法理解...

NSManagedObjectContext *opContext = [NSManagedObjectContext MR_contextForCurrentThread];

NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"DefaultData"
                                                         ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:jsonPath];

NSError *parseError;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&parseError];

NSArray *dataTypes = [json objectForKey:@"dataTypes"];

[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) 
    for (NSDictionary *obj in dataTypes) 
        [BTDataType MR_importFromObject:obj inContext:localContext];
    
];

NSError *saveError;
[opContext save:&saveError];

实体很简单,只有两个属性:importKey(int16)和name(String)...

JSON 就像...


    "dataTypes":[
         
             "importKey":1000,
             "name":"DataType A"
         ,
         
             "importKey":1001,
             "name":"DataType B"
         ,
         
             "importKey":1002,
             "name":"DataType C"
         ,
         
             "importKey":1003,
             "name":"DataType D"
         
    ]

【问题讨论】:

【参考方案1】:

我也有同样的问题。我可以通过在 Xcode 中选择我的实体然后添加 userInfo 键/值来解决它。所以对你来说,你会想要添加一个键/值'relatedByAttribute':'importKey'

看我的回答https://***.com/a/18370739/442695

【讨论】:

以上是关于使用 MagicalRecord 导入数据的主要内容,如果未能解决你的问题,请参考以下文章

MagicalRecord:后台导入数据,访问刚导入的数据

多态关系的 MagicalRecord 导入

如何在不阻塞 UI 的情况下正确使用 MagicalRecord 从 Web 服务导入数据

已经存在的 NSManagedObject 的 MagicalRecord 导入数据

MagicalRecord:如何将值导入相关实体

导入时保存所有内容之前的 MagicalRecord 完成块