2012-02-19 33 views
17

Tôi có một số ứng dụng iOS trên thị trường và trong tất cả chúng tôi có một tệp cơ sở dữ liệu SQLite nhỏ được kết nối với ứng dụng để cung cấp cho người dùng dữ liệu của mình. Sau khi cài đặt, người dùng tùy chỉnh DB này bằng cách thay đổi các tùy chọn nhất định.Tôi nên lưu trữ DB SQLite cho ứng dụng iPhone ở đâu?

Cho đến bây giờ, tất cả các ứng dụng này đều lưu trữ DB trong NSDocumentsDirectory. Sau khi gửi bản cập nhật cuối cùng của tôi, nó đã bị từ chối vì lưu trữ dữ liệu ở sai vị trí. Đối với các ứng dụng bị từ chối, tôi đã thay đổi vị trí lưu trữ thành NSCachesDirectory. Bây giờ tôi sợ rằng bộ nhớ cache sẽ bị xóa và xóa các tùy chỉnh của người dùng. Ứng dụng sẽ vẫn hoạt động, DB sẽ được tạo lại, nhưng tất cả các bảng đã thay đổi sẽ được đặt lại, do đó làm xáo trộn người dùng.

Loại tệp cơ sở dữ liệu này sẽ được lưu ở đâu? Tôi có quyền đưa nó vào thư mục Tài liệu không? Theo Apple, thư mục Documents dành cho "Dữ liệu quan trọng" là dữ liệu do người dùng tạo hoặc dữ liệu cần thiết cho hoạt động của ứng dụng. Tôi cảm thấy rằng nó thuộc danh mục đó, sự kiên trì cài đặt người dùng của tôi là hoạt động thích hợp, nhưng ai muốn chờ kháng cáo?

Trả lời

31

Hướng dẫn lập trình hệ thống tệp của Apple dành cho iOS mô tả đường dẫn (application_home)/Library làm nơi "tạo thư mục con tùy chỉnh cho các tệp bạn muốn sao lưu nhưng không được hiển thị với người dùng". Đường dẫn (application_home)/Documents được mô tả là "nội dung của thư mục này có thể được cung cấp cho người dùng thông qua chia sẻ tệp".

Cơ sở dữ liệu của bạn không giống như tài liệu, chúng giống như bộ đệm riêng mà người dùng không biết. Tôi khuyên bạn nên tạo một thư mục như (application_home)/Library/Database và lưu tệp ở đó. Đường dẫn bộ nhớ cache mà bạn đề cập không giống như tùy chọn tốt nhất cho tôi.

Bạn thực sự nên xem lại toàn bộ file system programming guide for iOS trước khi gửi một ứng dụng khác.

+0

Trả lời tuyệt vời, Cảm ơn! – Lkabo

0

Nếu cơ sở dữ liệu của bạn thực sự chứa nội dung do người dùng tạo thì thư mục Documents là vị trí thích hợp của nó. Tuy nhiên, bạn đề cập rằng bạn đang kiên trì "cài đặt người dùng của bạn" ... Nếu dữ liệu bạn kiên trì giống với cài đặt hoặc tùy chọn hơn, thì chúng phải nằm trong hệ thống con Mặc định. Xem tài liệu cho NSUserDefaults.

+1

Cảm ơn bạn đã trả lời, tôi đã sử dụng sai ngữ pháp với 'kiên trì' .. Tôi muốn giữ cho người dùng thay đổi cơ sở dữ liệu, Câu trả lời ở trên cho thấy thư viện có thể là địa điểm chính xác. Khi xem xét điều này, tôi thấy rằng một vị trí thích hợp hơn có thể là thư mục Library/Application Support. Tôi sẽ cố gắng chạy một số thử nghiệm thử nghiệm trên dữ liệu của tôi được lưu trữ ở đó .. – Lkabo

Các vấn đề liên quan