2014-02-28 40 views
1

我想實現的一件事 - 檢測何時創建了所有實體並將其表示在我的表中。MagicalRecord saveWithBlock問題

正如我理解的正確,將創建所有核心數據條目時調用下面代碼的完成塊?我對嗎?因爲當我嘗試在另一個控制器中查找所有實體時,我預計會創建所有條目。但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

在2.2版本的魔法記錄中存在一個錯誤,似乎並沒有節省進口。嘗試使用版本2.1。

+0

我們已經爲2.3版本的數據導入代碼做了很多工作 - 請問您是否可以試試看問題是否已解決?如果沒有,請在問題跟蹤器上針對此問題指出我的問題,然後我會查看解決問題的方法。謝謝! –

+0

@TonyArnold:我使用的是'2.3.2'版本,但仍然遇到這個問題。任何想法?我想提一下,我正在使用Swift項目。 –

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); 
} 

有一個已知的問題與saveWithBlockimportFromArray,所有的數據被保存之前完成塊被解僱(因此,爲什麼你沒有看到他們回來馬上 - 見https://github.com/magicalpanda/MagicalRecord/issues/642#issuecomment-40002145)。通過迭代你的數組importFromObject:inContext:你保證你的完成塊只會在所有保存完成後纔會被調用。