魔法记录,如何使用saveWithBlock并继续访问导入的数据

时间:2013-11-27 03:25:01

标签: ios core-data magicalrecord

这个想法是将服务器JSON响应导入核心数据而不阻塞主线程上的UI,之后我仍需要导入的实体,经过整个上午的测试/谷歌搜索后,我找不到正确的方法来执行此操作。

__block NSMutableArray *cars;
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
    for (NSDictionary *carObject in carObjects) {
        Notification *car = [Notification MR_importFromObject:carObject inContext:localContext];
        [cars addObject:car];
    }
} completion:^(BOOL success, NSError *error) {
    if (success) {
        for (Car *car in cars) {
            // data may have invalid data or be nil
            // [Car findAll] will have correct data though
        }
    }
}];

1 个答案:

答案 0 :(得分:0)

有趣的是,当我使用以下代码时,它可以工作。似乎导入也是在后台线程中完成的!

我真的不知道导入完成的上下文,但UI阻止问题已经消失。

__block NSMutableArray *cars;
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
    for (NSDictionary *carObject in carObjects) {
        Notification *car = [Notification MR_importFromObject:carObject]; // not pass in localContext
        [cars addObject:car];
    }
} completion:^(BOOL success, NSError *error) {
    if (success) {
        for (Car *car in cars) {
            // data may have invalid data or be nil
            // [Car findAll] will have correct data though
        }
    }
}];