我想要实现的一件事 - 检测何时创建所有实体并在我的表中表示它。
据我所知,当创建所有核心数据条目时,将调用以下代码的完成块?我对吗?因为当我尝试在另一个控制器中找到所有实体时,我预计会创建所有条目。但是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
}];
答案 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 迭代数组:您可以确保只在完成所有保存后才会调用完成块。