2011-03-10 5 views
2

에서 sqlite 데이터베이스를 덮어 쓰려고합니다. 개발자가 sqlite 데이터베이스에서 데이터를 덮어 쓰지 않으려는 대부분의 sqlite 앱과 달리, 이후의 업데이트로 모든 데이터를 덮어 쓰려고합니다. sqlite 데이터베이스는 똑같은 이름을 가지며 동일한 테이블을 가질 것입니다. 사용자가 앱을 삭제하고 다시 설치하지 않고 데이터베이스에 포함 된 데이터를 업데이트 할 수 있기를 바랍니다. 이 작업을 수행하는 쉬운 방법이 있습니까?iPhone 앱 업데이트

미리 감사드립니다.

+0

번들에서 DB 이름을 이름 바꾸기이 링크 에 따라,하지만 당신은 할 수 없었다 단지'insert''테이블을 truncate'하고 기록? –

답변

7

SQLite 데이터베이스 파일은 일반적인 파일이므로 특별한 단계가 필요하지 않습니다. 파일의 경로 또는 URL을 가져오고 NSFileManager의 -removeItemAtPath:error: 또는 -removeItemAtURL:error:을 사용합니다. 그런 다음 이전 데이터베이스를 만든 것과 같은 방법으로 새 ​​데이터베이스를 만듭니다.

+1

감사합니다. Tom. 따라서 미리로드 된 정보가있는 기존 데이터베이스의 경우 -removeItemAtPath : error :를 삽입하면 각 업데이트가 이전 데이터베이스를 제거하고 새 버전으로 바꾸기 만하면됩니다. – Benjamin

+0

그러면 이전 버전이 제거됩니다. 새로운 것으로 교체하는 것은 당신에게 달려 있지만 이전에 그렇게 했으므로 다시 할 수 있습니다. 메서드를 호출 할 때마다 이런 일이 발생하므로 실제로 이전 복사본을 제거하려는 경우에만 호출하는 방법에주의해야합니다. 이것은 데이터베이스가 응용 프로그램 번들이 아닌 문서 폴더와 같은 위치에 있다고 가정합니다. 앱 번들에있는 경우 모든 업데이트에서 자동으로 덮어 쓰지만 사용자가 수정할 수는 없습니다. –

+0

죄송합니다, 이것은 아마도 어리석은 질문 일뿐입니다. 그러나 데이터베이스를 앱 번들에 저장하려면 어떻게해야합니까? 나는이 간단한 해결책에 대해 생각하지 않았다. 사용자가 데이터를 수정하거나 저장하지 않기 때문에 이것이 내가 생각하는 최상의 솔루션이 될 것입니다. – Benjamin