코어 데이터에 이상한 문제가 있습니다. 중첩 된 테이블이있는 앱이 있습니다. 한 테이블은 수업 목록을보고 수업을 클릭하면 참석 한 학생을 보여주는 새 테이블로 이동합니다.코어 데이터 백그라운드 작업으로 인해 데이터가 사라짐
잘 작동 - 새로운 수업과 참석 한 학생을 추가 한 후에도 데이터가 완벽하게 표시됩니다. 문제는이 데이터를 생성하고 저장 한 후 임의의 시간 (분이 아닌 초) 후에 발생합니다. 수업은 첫 번째 표에 계속 표시되지만 공백에 참석 한 학생에게는 표시됩니다.
시뮬레이터를 중지 한 것처럼 데이터가 그대로 남아 있습니다. 데이터가 바로 있습니다.
보기간에 컨텍스트를 올바르게 전달하지 않을 가능성이 배제되었습니다. 아래 그림 - 어떤 배경 SQL 코드가 실행 된 후 문제가 발생하는 것 같습니다 :
2012-03-09 17:08:16.772 Club Manager[5147:12f1b] CoreData: sql: COMMIT
2012-03-09 17:08:16.774 Club Manager[5147:12f1b] CoreData: sql: BEGIN EXCLUSIVE
2012-03-09 17:08:16.775 Club Manager[5147:12f1b] CoreData: sql: UPDATE ZSTUDENT SET Z_OPT = ? WHERE Z_PK = ? AND Z_OPT = ?
2012-03-09 17:08:16.776 Club Manager[5147:12f1b] CoreData: sql: UPDATE ZSTUDENT SET Z_OPT = ? WHERE Z_PK = ? AND Z_OPT = ?
2012-03-09 17:08:16.777 Club Manager[5147:12f1b] CoreData: sql: INSERT INTO ZLESSON(Z_PK, Z_ENT, Z_OPT, ZDATE) VALUES(?, ?, ?, ?)
2012-03-09 17:08:16.786 Club Manager[5147:12f1b] CoreData: sql: INSERT OR REPLACE INTO Z_2STUDENTSATTENDED(Z_2LESSONSATTENDED, Z_4STUDENTSATTENDED) VALUES (11, 2)
2012-03-09 17:08:16.787 Club Manager[5147:12f1b] CoreData: sql: INSERT OR REPLACE INTO Z_2STUDENTSATTENDED(Z_2LESSONSATTENDED, Z_4STUDENTSATTENDED) VALUES (11, 1)
2012-03-09 17:08:16.788 Club Manager[5147:12f1b] CoreData: sql: COMMIT
2012-03-09 17:08:16.791 Club Manager[5147:12f1b] CoreData: sql: pragma page_count
2012-03-09 17:08:16.792 Club Manager[5147:12f1b] CoreData: annotation: sql execution time: 0.0014s
2012-03-09 17:08:16.793 Club Manager[5147:12f1b] CoreData: sql: pragma freelist_count
2012-03-09 17:08:16.795 Club Manager[5147:12f1b] CoreData: annotation: sql execution time: 0.0019s
이 내 다르게 2 테이블 행위에 대한 가져 오기 할 것 같다 - 여러 설정을 연주했는지를 가져올 수 있도록하지 않습니다 캐시 개체 만 해결하지 않는 것 같습니다 ....
- (void) setupFetchedResultsController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"ddMMyyyy"];
request.predicate = [NSPredicate predicateWithFormat:@"ANY lessonsAttended = [cd] %@", self.lesson];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]];
[request setShouldRefreshRefetchedObjects:YES];
[ request setReturnsObjectsAsFaults:NO];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.lesson.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
}
사람은 백그라운드 작업이 될 일을 알고 내 가져 오기 작업은 매우 감사이로 수신 할 방법 변경 이유 일 동안 나에게 화를 운전하고있다.
처음 그래서 나와 함께 부드럽게 여기에 질문을)
존