CoreData와 다시 싸우고 있는데 도움이 필요합니다. PCoreData UITableView에 데이터 다시로드 문제
RSS 리더를 쓰고 있습니다. 디자인은 libxml2 라이브러리를 사용하는 Apple TopSongs 예제를 기반으로합니다.
내 응용 프로그램이 끝나면 마지막 업데이트시기를 확인하려고합니다. 1 시간 이상 지난 경우 현재 영구 저장소를 제거하고 모든 것을 다시 다운로드합니다.
if ([[NSFileManager defaultManager] fileExistsAtPath:self.persistentStorePath]) {
NSError *error = nil;
BOOL oldStoreRemovalSuccess = [[NSFileManager defaultManager] removeItemAtPath:self.persistentStorePath error:&error];
NSAssert3(oldStoreRemovalSuccess, @"Unhandled error adding persistent store in %s at line %d: %@", __FUNCTION__, __LINE__, [error localizedDescription]);
}
로컬 SQL 파일이 삭제 된 것을 볼 수 있습니다.
이제 백그라운드에서 피드의 정보를 다운로드하기 위해 NSOperations를 만들고 있습니다.
지금까지 모든 것이 훌륭하게 작동합니다.
모든 RSS 피드와 마찬가지로, 변경 사항을 확인하고 coreData를 업데이트한다고 가정하는 업데이트 버튼이 있습니다. 초보자를 위해 나는 모든 것을 삭제하고 모든 것을 다시 다운로드하겠다고 결정했다. (내가 알지 못했지만 RSS 피드에는 guid가 없으며 변경 사항이 있는지를 파악하기 위해 해쉬 함수를 구현해야한다.)
그래서 나는 기본적으로 저장소를 삭제하기 위해 위와 같은 코드를 호출하고 있어요 .. 다시 (응용 프로그램을 처음로드 된 같은 논리)
나는를 다시로드하고 모든 RSS 피드 다시 다운로드 테이블을 볼 수 있지만 여전히 tableView에서 동일한 데이터를 볼 수 있습니다. 모든 것이 그대로 유지됩니다.
나는 더 멀리 가고 콘텐츠를 다운로드하지 않고 저장소를 삭제하기로 결정했습니다.
if ([[NSFileManager defaultManager] fileExistsAtPath:app.persistentStorePath]) {
NSError *error = nil;
BOOL oldStoreRemovalSuccess = [[NSFileManager defaultManager] removeItemAtPath:app.persistentStorePath error:&error];
NSAssert3(oldStoreRemovalSuccess, @"Unhandled error adding persistent store in %s at line %d: %@", __FUNCTION__, __LINE__, [error localizedDescription]);
}
[self.managedObjectContext save:&err];
[self.fetchedResultsController performFetch:&error];
[self.tableView reloadData]
빈 테이블이 표시 될 것으로 예상되지만 데이터는 여전히 존재합니다.
어떻게 가능합니까? 내가 가게를 지우고, 다시 가져 왔고, 데이터를 다시 불러 들였다.
내가 뭘 잘못하고 있니?
당신을 위해 reloadData 일을 했습니까? – Ladislav
은 완벽한 대답을 가지고 있습니다. 빈번하게 지속되는 단위를 삭제하면 실제로 나쁜 습관이됩니다.기존 지속 유닛에서 데이터를 제거하고 최신 지속 유닛을 추가하기 만하면됩니다. –
나는 애플 예제에서 배울 것이고 그들은 " // 모든 객체를 삭제하는 것보다 더 쉽다; // TopSongs 예제에서 기존 저장소를 테스트한다."라고 썼다. – djTeller