我在主線程中創建實體藝術家, 然後在後臺線程中傳遞它並與實體相關聯。通過MagicalRecords在不同線程中使用NSManagedObject
如何正確地做到這一點?
- (IBAction)add:(id)sender
{
Artist *artist = [Artist MR_createEntity];
artist.title = @"Eminem";
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
// here a large calculation
Album *album = [Album MR_createEntity];
album.title = @"Album 1";
[artist setAlbums:[NSSet setWithArray:@[album]]];
dispatch_async(dispatch_get_main_queue(),^{
[artist.managedObjectContext MR_saveToPersistentStoreAndWait];
});
});
}
錯誤:
MagicalRecordTest[2008:1803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'albums' between objects in different contexts (source = <Artist: 0x15eaa2d0>
你應該真的在使用來自魔法記錄的特定線程調用。我認爲它是'performBlock'。 – Fogmeister