【发布时间】:2014-01-15 15:37:17
【问题描述】:
我正在尝试使用 MagicalRecord 一次导入大量实体,但 saveToPersistentStoreWithCompletion 在控制台内打印了多次,并且需要很长时间才能完成。
这是存档!
[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
NSLog(@"Saved the database changes");
}];
我很欣赏有大量的项目要保存,但 MagicalRecord 保存多个相同信息的上下文是否是正常行为?如果是这样,我可以让它在后台简单地保存一个上下文吗?
提前感谢您的帮助。
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x18df55f0) → Saving <NSManagedObjectContext (0x18df55f0): *** UNNAMED ***> on *** BACKGROUND THREAD ***
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x18df55f0) → Save Parents? 1
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x18df55f0) → Save Synchronously? 0
-[NSManagedObjectContext(MagicalRecord) MR_contextWillSave:](0x18df55f0) Context UNNAMED is about to save. Obtaining permanent IDs for new 18677 inserted objects
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x1765c3f0) → Saving <NSManagedObjectContext (0x1765c3f0): *** DEFAULT ***> on *** BACKGROUND THREAD ***
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x1765c3f0) → Save Parents? 1
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x1765c3f0) → Save Synchronously? 0
-[NSManagedObjectContext(MagicalRecord) MR_contextWillSave:](0x1765c3f0) Context DEFAULT is about to save. Obtaining permanent IDs for new 18677 inserted objects
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x1765de80) → Saving <NSManagedObjectContext (0x1765de80): *** BACKGROUND SAVING (ROOT) ***> on *** MAIN THREAD ***
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x1765de80) → Save Parents? 1
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x1765de80) → Save Synchronously? 0
-[NSManagedObjectContext(MagicalRecord) MR_contextWillSave:](0x1765de80) Context BACKGROUND SAVING (ROOT) is about to save. Obtaining permanent IDs for new 18677 inserted objects
__70-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:]_block_invoke25(0x1765de80) → Finished saving: <NSManagedObjectContext (0x1765de80): *** BACKGROUND SAVING (ROOT) ***> on *** BACKGROUND THREAD ***
更新 1:
我刚刚发现使用以下方法可以大大加快时间,但似乎仍然可以节省 3 倍。
[MagicalRecord saveUsingCurrentThreadContextWithBlock:^(NSManagedObjectContext *localContext){
} completion:^(BOOL success, NSError *error){
NSLog(@"Saved the database changes");
}];
【问题讨论】:
标签: objective-c nsmanagedobjectcontext magicalrecord