MagicalRecord saveWithBlock问题

时间:2014-02-28 11:59:33

标签: ios magicalrecord

我想要实现的一件事 - 检测何时创建所有实体并在我的表中表示它。

据我所知,当创建所有核心数据条目时,将调用以下代码的完成块?我对吗?因为当我尝试在另一个控制器中找到所有实体时,我预计会创建所有条目。但是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
}];

2 个答案:

答案 0 :(得分:2)

2.2版魔法记录中存在一个似乎无法保存导入的错误。尝试使用2.1版。

答案 1 :(得分:1)

相反,试试这个:

[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 迭代数组:您可以确保只在完成所有保存后才会调用完成块。