Core Data
アプリで複数のコンテキストを使用していて、最近になってコアデータの並行性がクラッシュしました。これらを追跡するのに役立つ-com.apple.CoreData.ConcurrencyDebug 1
を追加しましたが、表示されている問題を解決する方法がわかりません。コアデータの並行性の問題と修正方法
- (void)getEvents:(void (^)(NSArray *fetchedItems))completionBlock {
// Initialize Fetch Request
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"ZSSCDEvent"];
// Initialize Asynchronous Fetch Request
NSAsynchronousFetchRequest *asynchronousFetchRequest = [[NSAsynchronousFetchRequest alloc] initWithFetchRequest:request completionBlock:^(NSAsynchronousFetchResult *result) {
dispatch_async(dispatch_get_main_queue(), ^{
// Dismiss Progress HUD
[SVProgressHUD dismiss];
// Process Asynchronous Fetch Result
if (result.finalResult) {
NSArray *results = result.finalResult;
completionBlock(results);
// Reload Table View
[self.activityIndicator stopAnimating];
[self.tableViewList reloadData];
}
});
}];
// Execute Asynchronous Fetch Request
[self.managedObjectContext performBlock:^{
// Execute Asynchronous Fetch Request
NSError *asynchronousFetchRequestError = nil;
NSAsynchronousFetchResult *asynchronousFetchResult = (NSAsynchronousFetchResult *)[self.managedObjectContext executeRequest:asynchronousFetchRequest error:&asynchronousFetchRequestError];
if (asynchronousFetchRequestError) {
NSLog(@"Unable to execute asynchronous fetch result.");
NSLog(@"%@, %@", asynchronousFetchRequestError, asynchronousFetchRequestError.localizedDescription);
}
}];
}
これは私にEnqueued from com.apple.main-thread (Thread 1)
エラーを与える:ここで
は私がやっているものです。これは私が混乱しているところです。なぜなら、私はこれをメインスレッドで実行しており、私のプライベートコンテキストをここで使う必要はないと思っています。
なぜ私はここに同時実行の問題を取得しています上の任意のアイデア?
EDIT:それは他の誰かが、正確な問題を持っていたように見え、それはXcodeのバグであると考えて:CoreData asynchronous fetch causes concurrency debugger error