2009-06-15 1 views
7

외부 MySQL 서버에서 데이터를 보유하고 있지만 응답 시간을 단축하기 위해 코어 데이터를 사용하여 로컬로 캐시하는 응용 프로그램에서 작업하고 있습니다. 기본적으로, 내가 뭘하려는 것은 이것이다 :새로운 가져 오기가없는 NSFetchedResultsController의 업데이트 결과

  1. (NSFetchedResultsController를 사용하여 SQLite는 데이터 저장소) 코어 데이터에서 데이터를 가져 오기 및 백그라운드에서 그것을 MySQL 서버에서
  2. 잡아 새로운 항목을 표시
  3. 새 데이터 세트 (새 항목과 이전 항목 모두)로 현재 테이블보기 새로 고침

나는이 모든 것을 마지막 단계를 제외하고 수행했습니다. NSFetchedResultsController가 데이터 세트를 업데이트하는 방법을 알 수 없습니다. 지금까지 내가 직접 NSManagedObjectContext에 항목을 추가하는 시도했다 :

[NSEntityDescription insertNewObjectForEntityForName:@"Entity" 
           inManagedObjectContext:[fetchedResultsController 
                 managedObjectContext]];

내가 애플이 자신의 CoreDataBooks 예에서 무엇을 시도하고, 별도의 "추가"관리 개체 컨텍스트와 mergeChangesFromContextDidSaveNotification:에 대한 호출을 사용했습니다. 나도 가져온 결과 컨트롤러의 관리되는 개체 컨텍스트에서 현재 NSManagedObject * 집합을 변경하지 않는 것 같습니다.

NSFetchedResultsController가 현재 관리하고있는 객체 세트를 어떻게 업데이트합니까?

답변

4

개체가 업데이트되지 않았지만 NSFetchedResultsController 인스턴스가 섹션 색인 제목을 제대로 업데이트하지 않아서 UITableView에서 결과를 볼 수 없다는 것을 알았습니다.

페치 된 결과 컨트롤러에서 관리되는 개체 컨텍스트를 업데이트합니다. 은 컨트롤러의 결과 개체 집합을 업데이트합니다 ().

7

그냥 문제가 생기고 분명히 알림을 사용하는 것이 테이블에서 nsfetchedresults 컨트롤러를 사용할 때 테이블 뷰를 새로 고칠 수있는 독특한 방법입니다. 핵심 데이터 북 샘플처럼

:
1 단계 : 당신의 컨텍스트 (당신의 선택에 통지 트리거)
STEP3 저장 :는 알림 NSManagedObjectContextDidSaveNotification의 NSNotificationCenter에
2 단계를 관찰자를 추가을 MergeChangesFromContextDidSaveNotification 메서드를 사용하여 컨텍스트에서 변경 내용을 병합하십시오. 알림 센터에서 옵저버를 제거하십시오.
step4 : 개인적으로

내가 알림 certer을 무시하고 단지 젠장 자신을 새로 고침 :

+0

을이 참으로 내가 사용하는 방법이고, 나는이 생각 문맥에게하고 싶은 애플의 일부를 수행하는 방법은 자신의 핵심 데이터 예제. – Tim