코어 데이터 저장소 (sqlite)를 삭제하는 방법이 올바른지 확인하고 싶습니다. 충돌없이 작동하는 것으로 보이지만 이것이 올바른 방법인지 확인하고 싶었습니다. 이후 사용자가 데이터베이스에 연결하면 새 sqlite 파일이 자동으로 생성됩니다.코어 데이터 저장소를 삭제하고 다시 만드는 올바른 방법
- (BOOL)dropDataStore{
// ----------------------
// This method removes all traces of the Core Data store
// ----------------------
NSError *_error = nil;
NSURL *_storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Store.sqlite"];
NSPersistentStore *_store = [persistentStoreCoordinator persistentStoreForURL:_storeURL];
// Remove the SQL store and the file associated with it
if ([persistentStoreCoordinator removePersistentStore:_store error:&_error]) {
[[NSFileManager defaultManager] removeItemAtPath:_storeURL.path error:&_error];
}
if (_error) {
return NO;
}
persistentStoreCoordinator = nil;
managedObjectContext = nil;
managedObjectModel = nil;
return YES;
}
감사합니다. Tom. 나는 shm과 wal 파일들이 문제가되지 않도록 저널링을 꺼 놓았다. 내 모델의 유일한 속성은 부동 소수점, 날짜 및 정수입니다. 내가이 일을하는 이유는 사용자에게 "모든 데이터 삭제"옵션을 제공하기 위해서입니다.이 방법은 각 엔티티의 객체를 비우지 않고 깨끗하다고 생각했습니다.이 추가 정보를 사용하면 함수 사운드가됩니다. 감사합니다. – d264789
소리가 들립니다. 저널링을 끄는 것이 실제로 좋은 생각이 아니라는 점과, 나중에 저널링이 가능 해지거나 모델에 바이너리 속성을 추가하는 경우에도 유지 보수 문제가 될 수 있다는 점에서 소리가 나지 않습니다. –
감사합니다 Tom 모든 데이터를 하나의 단일 파일로 유지하기 위해 저널링 기능을 끄고, 하나의 파일 만 백업하기 위해 itunes 파일 공유를 사용하여 백업 할 때 사용자에게 유용합니다. 이것은 유효한 해결책은 아니지만, 현재 상황에서이 방법으로 충돌이나 다른 종류의 손상이 발생할 수 있습니까? – d264789