1) AFAIK, 당신은 업데이트 할 때, 기존의 응용 프로그램 번들은 새로운 응용 프로그램 번들로 대체됩니다. 그러나 사용자 데이터는 변경되지 않습니다. 즉 앱이 사용자에 의해 사용과 함께 변경되는 sqlite DB의 사본은 삭제되거나 대체되지 않습니다.
2) 그래서, 당신은 쿼리로 DB에 아마도 배를 변경 할 수 있습니다
가) 새로운 테이블 CREATE TABLE
쿼리로 이동합니다.
b) 테이블 구조를 변경하면 ALTER TABLE
개의 검색어가 표시됩니다.
3) 이제 한 가지 문제는 이전 버전을 출시했을 때이 모든 것을 생각하지 않았다는 것입니다. 그렇다면 2a 및 2b과 같은 쿼리가 업그레이드시에만 실행되도록하려면 어떻게해야합니까?
a) 처음으로 응용 프로그램에서 제어권을 얻었을 때 사용자 상호 작용을 허용하기 전에 새 버전에서 '변경 한'테이블에 더미 SELECT SINGLE * FROM <tablename>
을 발생 시키십시오.
b) sqlite3_column_count
및 sqlite3_column_name
을 사용하여 DB가 [이전 또는 신규]에 해당하는 앱 버전을 확인하십시오. 이 새 버전 (새 열이 이미 존재 즉), 다른 사람, 아무것도하지 않고 내가 2A 및 2B으로 앞서 언급 한 쿼리를 발생하는 경우
C).
이 질문과 그 답변은 유용 할 것입니다. http://stackoverflow.com/questions/554009/deploying-sqlite-db-on-iphone-app-upgrade – ArjunShankar
가장 좋은 방법은 기존 데이터베이스에 구조적 변경을 만들어야한다는 것입니다 만. 그것은하기 쉽고 더 논리적 일 것입니다. –
하지만 내 앱이 기기에 설치되어 있고 새 버전을 설치하는 경우 이전 데이터가 그대로 유지되도록 새로운 변경 사항을 얻을 수있는 방법이 있습니다. – PJR