最も簡単な方法は、MOC に小さなチャンクで変更を加え、それぞれの小さな変更を保存することです。ただし、正確なパーセンテージを計算するには、最初に作業の合計量を知る必要があります... または、適切な推測を行い、進行するたびに合計を更新します。
とにかく、あなたはこのようなことをすることができます...
dispatch_async(some_queue, ^{
while (workToDo) {
getSomeWorkToDo();
doTheCurrentPieceOfWork();
// Save current piece of work practicing Safe Core Data
[managedObjectContext performBlock:^{
if (![managedObjectContext save:&error]) {
// Handle error
}
}];
computePercentageComplete();
dispatch_async(dispatch_get_main_queue(), ^{
// Update the control with the new percent complete
});
}
});