0
이 두 함수 호출 사이 concurency 충돌이 충돌하는 것 같다 :코어 데이터 : 저장하고 가져
MagicalRecord.save({ (localContext) in
let items = NewsItem.staleNewsItems(in: localContext)
if ((items?.count)! > 0){
items?.forEach({ (item) in
if let object = item as? NSManagedObject {
object.mr_deleteEntity(in: localContext)
}
})
}
})
및
- (void) buildAndFetchFRCsInContext:(NSManagedObjectContext*)context {
self.newsItemsFRC = [self buildFetchResultsControllerForClass:[NewsItem class] sortedBy:@"id" withPredicate:nil inContext:context];
[context performBlock:^{
__unused NSDate* start = [NSDate date];
NSError* error;
[self.newsItemsFRC performFetch:&error]; // this line crashes
[self calculateAndBroadcastCounts];
}];
}
이 스레드로부터 안전 전화에 저장되어 있습니까? 그렇다면이 두 기능으로 인해 서로가 충돌을 일으킬 수 있습니다.
이 한 번 봐 : 난 그냥 보장 performBlockAndWait가 호출 스레드에서 실행하기 위해 저장 마법의 레코드를 사용로 전환 http://stackoverflow.com/questions/22509735/barrier-operations-in- nsoperationqueue, 동시성을위한 장벽 사용 –