2011-07-31 2 views
5

질문은 간단합니다. NSManagedObjectContext의 save:(NSError **)error 메서드는 언제 사용해야합니까? 내가 이해하는 것에서 만 변경된 데이터를 영구 저장소에 저장합니다. Xcode 템플릿 생성 응용 프로그램 대리인이 applicationWillTerminate의 save : 메서드를 호출하면 충분합니까? 내 코드에 대한NSManagedObjectContext의 save : 메서드를 사용하는 경우

세부 사항 :

  • 다중 스레드
  • 나는 하나의 NSPersistentStoreCoordinator
  • 데이터는 백그라운드 스레드에서 변경 사용하고 있습니다 (따라서 여러 NSManagedObjectContext 년대를 사용하여 백그라운드에서 작업을 수행) 병합되었습니다 mergeChangesFromContextDidSaveNotification:
  • 더 알아야 할 사항이 있으면 물어보십시오!

전화 할 때 가이드 라인을 찾을 수 없어서 모두에게 물어보기로했습니다. 답장을 미리 보내 주셔서 감사합니다!

답변

6

데이터를 저장하려면 항상 save :를 호출해야합니다. applicationWillTerminate가 호출되는 것을 항상 보장 할 수는 없습니다. 예를 들어, 메모리 문제로 인해 응용 프로그램이 충돌하거나 다른 것들로 인해 응용 프로그램이 충돌하는 경우 호출되지 않습니다.

실제로 사용자가 저장하려는 데이터를 생성하는 작업을 완료하면 데이터를 저장합니다.

+0

웹에서 새로운 정보를 가져 와서 모델에 추가하는 것과 같은 백그라운드 작업의 경우 추가를 완료하면 저장할 수 있습니까? 귀하의 답변 주셔서 감사합니다! – Koen

+0

예 - 완료되면 저장합니다. ManagedObjectContext는 쓰레드마다 다르므로 기억을 위해 배경 스레드를 생성하지 마십시오. – dtuckernet

+0

같은 스레드에서'save :'를 호출합니다. NSManagedObjectContext를 만듭니다. NSManagedObjectContext는 대부분 백그라운드 스레드에 있습니다. 같은 스레드에서 시작 및 저장이 발생하면 문제가되지 않습니다. – Koen

관련 문제