MagicalRecord saveWithBlock 问题
Posted
技术标签:
【中文标题】MagicalRecord saveWithBlock 问题【英文标题】:MagicalRecord saveWithBlock issue 【发布时间】:2014-02-28 11:59:33 【问题描述】:我想要实现的一件事 - 检测何时创建所有实体并将其表示在我的表中。
据我了解,当创建所有核心数据条目时,将调用以下代码的完成块?我对吗?因为当我尝试在另一个控制器中查找所有实体时,我希望创建所有条目。但是 findAll 返回空数组。只有重新加载控制器才能解决这个问题。
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext)
NSArray *objects = responseData[@"data"];
NSArray *array = [Team MR_importFromArray:objects inContext:localContext];
completion:^(BOOL success, NSError *error)
operationSuccess(nil); // return me to controller that requested this block
];
【问题讨论】:
【参考方案1】:magic record 2.2 版本中存在一个似乎无法保存导入的错误。尝试使用 2.1 版。
【讨论】:
我们已经为 2.3 版本的数据导入代码做了大量工作——请您试一试,看看问题是否得到解决?如果没有,请在问题跟踪器上指出我的问题,我会看看修复它。谢谢! @TonyArnold:我正在使用版本2.3.2
,但仍然遇到此问题。任何的想法?我想提一下我在 Swift 项目中使用的。【参考方案2】:
试试这个:
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext)
for(NSDictionary *dictionary in objects)
[Team MR_importFromObject:dictionary inContext:localContext];
completion:^(BOOL success, NSError *error)
NSArray *array = [NSArray arrayWithArray:[Team MR_findAll]];
operationSuccess(array);
saveWithBlock 和 importFromArray 存在一个已知问题,即在保存所有数据之前触发完成块(因此您没有看到它们立即返回 -见https://github.com/magicalpanda/MagicalRecord/issues/642#issuecomment-40002145)。通过使用 importFromObject:inContext 遍历您的数组:您可以保证只有在所有保存完成后才会调用您的完成块。
【讨论】:
以上是关于MagicalRecord saveWithBlock 问题的主要内容,如果未能解决你的问题,请参考以下文章
在并发 NSOperation (MagicalRecord-2.3) 中使用 MagicalRecord 的正确方法
未找到 MagicalRecord/MagicalRecordDeprecationMacros.h 文件