を使用していくつかの作業を実行し、NSBlockOperation
このブロック内で永続ストアが永続ストアを失います。
次のコード:
- (void) eraseCoreData_ManagedObjectsInArray:(NSArray *) arrayOfManagedObjectsToDelete usingManagedContext:(NSManagedObjectContext *) managedObjectContext
{
NSLog(@"Managed object context is %@", managedObjectContext);
NSLog(@"----->Persistent store of the deletion context has %d stores", [managedObjectContext.persistentStoreCoordinator.persistentStores count]);
// add the operation to the queue with a block
[self.coreDataDeletionQueue addOperationWithBlock:^{
for (NSManagedObject *objectToDelete in arrayOfManagedObjectsToDelete) {
[managedObjectContext deleteObject:objectToDelete];
}
NSLog(@"Managed object context in operation block is %@", managedObjectContext);
NSLog(@"Persistence store coordinator in operation block is %@", managedObjectContext.persistentStoreCoordinator);
NSLog(@"Persistent store of the deletion context in operation block has %d stores", [managedObjectContext.persistentStoreCoordinator.persistentStores count]);
NSError *saveError = nil;
if (![managedObjectContext save:&saveError]) {
NSLog(@"Couldn't save Core-Data state for the deleted objects result: %@", [saveError localizedDescription]);
}
}];
}
これをログアウトします:
管理対象オブジェクトのコンテキストは < NSManagedObjectContext: 0xa46ff10 > です
----->削除コンテキストの永続ストアには 1 つのストアがあります
操作ブロックの管理オブジェクト コンテキストは < NSManagedObjectContext: 0xa46ff10 > です
オペレーション ブロックの永続ストア コーディネーターは < NSPersistentStoreCoordinator: 0xa1a45e0 > です。
操作ブロックの削除コンテキストの永続ストアにストアがありません
*キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: 'この NSPersistentStoreCoordinator には永続的なストアがありません。保存操作を実行できません。
このストアの突然の喪失の理由はわかりません。これは、メモリ内ストアを使用するように設定したテスト スイートで実行されておりNSOperationQueue
、ブロックを実行するこれとメモリが共有されていないためでしょうか?