iOS 앱에서 Core Data DB의 여러 테이블 (엔티티)에 대한 업데이트를 확인하기 위해 앱을로드 할 때 웹 서비스가 시작됩니다. 사용자가 여전히 응용 프로그램iOS 백그라운드에서 업데이트하는 동안 Core Data Entities에 액세스 중입니다.
오전 데 문제와 상호 작용할 수 있도록
나는 백그라운드 스레드에서이 내가 코어 데이터 -에서 액세스 엔티티의 테이블을 포함하는 뷰를로드 할 때하면됩니다 - 배경 업데이트가 완료 될 때까지 앱이 응답하지 않고 지연됩니다.
예를 들어 "작업"테이블을 보려고 터치하는 동안 백그라운드에서 "작업"을 업데이트하는 동안 래그리스 경험을 할 수 있습니까?
나는 MagicalRecord를 사용하고 saveInBackgroundWithBlock
블록에 어떤 도움
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){
//UserTasks
if([viewName isEqualToString:[[NSString stringWithFormat:@"UserTask_vw_iSales"] lowercaseString]])
{
//returns a UserTask or nil if one does not exist
UserTask *oldUserTask = [UserTask doesExist:[record valueForKey:@"JSONData"]];
if(oldUserTask)
{
NSLog(@"deleting old UserTask");
[UserTask MR_deleteAllMatchingPredicate:[NSPredicate predicateWithFormat:@"userTaskUID == %@", oldUserTask.userTaskUID] inContext:localContext];
}
//create new one
UserTask *utt = [UserTask MR_createInContext:localContext];
[utt initWithJSONSting:[record valueForKey:@"JSONData"]];
NSLog(@"Creating UserTaskType: %@", utt.userTaskUID);
}
}];
덕분에 내 생성/업데이트를 수행하고있다! 나는이 게시물을 따라 쓰는 물건 내가 찾던 동작을 취득 MagicalRecord를 사용하지 않는 결국
NSManagedObjectContext는 어디에 초기화합니까? 고려해야 할 중요한 요소는 초기화 된 동시성 유형입니다. –
@JacobRelkin 내 AppDelegate에서는 다음 줄을 사용하여 메인 NSManagedObjectContext를 초기화합니다.'_ManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType : NSMainQueueConcurrencyType :;'그런 다음 MagicalRecord 함수를 사용하여 액세스합니다. – RyanG
블록 내에서'NSManagedObjectContext' 인스턴스가'+ [NSManagedObjectContext MR_defaultContext]'입니까? –