나는이 대리자 메서드가이 메소드가 호출 될 때managedObjectContext save가 즉시 삽입되지 않습니까?
- (void)didFinishCreatingTrip:(Trip *)trip
{
NSLog(@"before");
NSError* error = nil;
if (![self.database.managedObjectContext save:&error]) {
NSLog(@"%@", error);
}
NSLog(@"after");
}
가 삽입 SQL 쿼리가 즉시 발생하지 않습니다,하지만 약 10 초 후에 (콘솔 로그에 따라). 예상 되나요? 즉시이를 위해 무엇을 할 수 있습니까? 문제는 너무 일찍 아이폰 시뮬레이터를 죽일 때 내 데이터가 손실된다는 것입니다.
로그 :
2012-07-07 23:29:41.702 tripmoney[57542:fb03] before
2012-07-07 23:29:41.703 tripmoney[57542:fb03] after
2012-07-07 23:29:54.948 tripmoney[57542:11407] CoreData: sql: BEGIN EXCLUSIVE
2012-07-07 23:29:54.949 tripmoney[57542:11407] CoreData: sql: SELECT Z_MAX FROM Z_PRIMARYKEY WHERE Z_ENT = ?
2012-07-07 23:29:54.950 tripmoney[57542:11407] CoreData: sql: UPDATE Z_PRIMARYKEY SET Z_MAX = ? WHERE Z_ENT = ? AND Z_MAX = ?
2012-07-07 23:29:54.951 tripmoney[57542:11407] CoreData: sql: COMMIT
2012-07-07 23:29:54.953 tripmoney[57542:11407] CoreData: sql: BEGIN EXCLUSIVE
2012-07-07 23:29:54.954 tripmoney[57542:11407] CoreData: sql: INSERT INTO ZTRIP(Z_PK, Z_ENT, Z_OPT, ZNAME) VALUES(?, ?, ?, ?)
2012-07-07 23:29:54.955 tripmoney[57542:11407] CoreData: sql: COMMIT
2012-07-07 23:29:54.956 tripmoney[57542:11407] CoreData: sql: pragma page_count
2012-07-07 23:29:54.957 tripmoney[57542:11407] CoreData: annotation: sql execution time: 0.0006s
2012-07-07 23:29:54.957 tripmoney[57542:11407] CoreData: sql: pragma freelist_count
2012-07-07 23:29:54.958 tripmoney[57542:11407] CoreData: annotation: sql execution time: 0.0006s
는 당신에게 당신이 생각하는 경우이 메소드가 호출되고 확실한가요? 10 초 * 미친 *이며, 또한 그 방법은 비동기라고 생각하지 않습니다. if 블록 앞뒤에 로그인하여 언제 호출되는지 확인하십시오. –
로그와 함께 편집되었습니다. 실제로 비동기로 보입니다. –
실제로 그것은 ... –