2012-02-19 5 views
17

저는 시장에 여러 개의 iOS 앱이 있으며, 모두 내 데이터를 사용자에게 제공하기 위해 앱에 연결된 작은 SQLite 데이터베이스 파일을 가지고 있습니다. 일단 설치되면 사용자는 특정 옵션을 변경하여이 DB를 사용자 정의합니다.내 iPhone 앱용 SQLite DB는 어디에 저장해야합니까?

지금까지 모든 앱은 DB를 NSDocumentsDirectory에 저장합니다. 마지막 업데이트를 제출 한 후 잘못된 위치에 데이터를 저장하는 것이 거부되었습니다. 거부 된 앱의 경우 저장소 위치를 NSCachesDirectory으로 변경했습니다. 이제 캐시가 지워지고 사용자 지정 사항이 지워질 것입니다. 응용 프로그램은 여전히 ​​작동하고 DB는 다시 만들어 지지만 변경된 모든 테이블은 재설정되어 사용자를 화나게합니다.

어디에서 이러한 유형의 데이터베이스 파일을 저장해야합니까? Docs dir에 넣을 수 있었습니까? Apple에 따르면 Docs dir은 사용자가 생성 한 데이터 또는 응용 프로그램의 올바른 작동에 필요한 데이터 인 "중요 데이터"용입니다. 나는 그것이 그 카테고리에 속한다고 느끼고, 내 사용자 설정을 올바로 유지하지만, 누가 호소력을 기다리고 싶습니까?

답변

31

iOS 용 Apple의 파일 시스템 프로그래밍 가이드는 "사용자에게 노출되지는 않지만 백업 할 파일에 대한 사용자 지정 하위 디렉토리를 만드는"장소로 경로를 (application_home)/Library으로 설명합니다. (application_home)/Documents 경로는 "이 디렉터리의 내용을 파일 공유를 통해 사용자가 사용할 수 있도록 설정할 수 있습니다."라고 설명되어 있습니다.

데이터베이스는 문서처럼 들리지 않으므로 사용자가 모르는 개인 캐시처럼 들립니다. (application_home)/Library/Database과 같은 디렉토리를 만들고 거기에 파일을 저장하는 것이 좋습니다. 언급 한 캐시 경로가 나에게 가장 좋은 옵션처럼 들리지 않습니다.

다른 앱을 제출하기 전에 전체 file system programming guide for iOS을 정말로 검토해야합니다.

+0

답장을 보내 주셔서 감사합니다. – Lkabo

0

데이터베이스에 실제로 사용자 생성 콘텐츠가 포함되어 있으면 문서 디렉토리가 적절한 위치입니다.

그러나 "사용자 설정"을 유지하고 있다고 언급했습니다 ... 지속하는 데이터가 설정이나 환경 설정과 비슷하면 기본값 하위 시스템에 있어야합니다. NSUserDefaults에 대한 설명서를 참조하십시오.

+1

답장을 보내 주셔서 감사합니다. 'persisting'과 함께 잘못된 구두법을 사용했습니다. 사용자의 데이터베이스 변경 사항을 유지할 예정입니다. 위의 대답은 라이브러리 집합이 올바른 위치 일 수 있음을 나타냅니다. 이 부분을 살펴보면서 더 적절한 위치가 라이브러리/응용 프로그램 지원 디렉토리 일 수 있음을 발견했습니다. 나는 거기에 저장된 나의 데이터에 대한 몇 가지 시련을 실행하려고 시도 할 것입니다 .. – Lkabo

관련 문제