2012-04-13 34 views
7

Tôi đang phát triển một ứng dụng cần thực hiện các phép tính tốn kém khi khởi động. Vì vậy, lần đầu tiên ứng dụng chạy, ứng dụng thực hiện các phép tính và lưu trữ kết quả trong một tệp.Có cách nào để duy trì dữ liệu ứng dụng giữa lượt cài đặt ứng dụng và gỡ cài đặt trong iOS

Nếu người dùng quyết định gỡ cài đặt ứng dụng và cài đặt lại ứng dụng sau, các tính toán phải được thực hiện lại và tôi muốn tránh tính lại. Lưu ý rằng tôi không nói về các bản cập nhật của ứng dụng mà là về gỡ cài đặt/cài đặt lại.

Tôi đã tự hỏi liệu có cách nào để duy trì dữ liệu có thể truy cập chỉ dành cho ứng dụng của tôi nhưng có thể tồn tại gỡ cài đặt hay không.

Giải pháp có thể nằm bên trong thiết bị (sử dụng loại tệp/sở thích/...) hoặc dựa trên máy chủ. Ví dụ, một giải pháp có thể là gửi id thiết bị với kết quả đến một máy chủ và lưu trữ nó ở đó, nhưng vì id thiết bị đã không được chấp nhận trong iOS 5, không phải là một giải pháp hợp lệ nữa.

Cảm ơn câu trả lời của bạn.

Jaime

Trả lời

9

Bạn không nói dữ liệu bao nhiêu, nhưng sau đây sẽ là lựa chọn:

  • iCloud
  • Keychain
  • Dropbox

duy nhất "phổ quát" tùy chọn, rằng tất cả các thiết bị sẽ có và không thể bị vô hiệu hóa, là Keychain mặc dù bạn bị giới hạn bởi lượng không gian bạn có thể sử dụng.

Cá nhân, tôi sẽ không làm gì cả. Nếu người dùng xóa ứng dụng, tôi nghĩ đó là trò chơi công bằng để phải tính toán lại nội dung khi cài đặt lại.

+5

Không làm gì là một lựa chọn hợp lệ mà nhiều người quên. Chỉ vì bạn không làm gì không có nghĩa là bạn đã không xem xét vấn đề nó chỉ có nghĩa là không có gì là giải pháp tốt nhất hoặc thực tế nhất cho vấn đề bạn đang phải đối mặt. Tôi thích đề xuất không có gì là một giải pháp. Great tiết kiệm thời gian. – Damo

+0

UIPasteboard, có thể là một cách thay thế – CarlJ

+0

Cảm ơn câu trả lời của bạn. Tôi đồng ý với bạn rằng không làm gì là một lựa chọn hợp lệ và thậm chí tốt nhất trong nhiều trường hợp, những gì tôi không viết trong câu hỏi của tôi là chi phí tính toán cũng có thể tiết kiệm, vì vậy phải tính hai lần dữ liệu ban đầu là hai lần đắt tiền về mặt số tiền – masta

0

Hãy để người dùng kết nối với tài khoản DropBox của họ và bạn có thể lưu các dữ liệu đó - API của họ thực sự là thẳng về phía trước để sử dụng, và bạn sẽ không phải lo lắng về cách Apple có thể quyết định để thực hiện sự kiên trì dữ liệu trong tương lai.

+0

Cảm ơn, vấn đề duy nhất tôi thấy là chức năng của ứng dụng của tôi phụ thuộc vào việc người dùng có tài khoản trên tài khoản đăng, phải không? – masta

4

Cách tôi đã đạt được điều này cho đến nay là bằng móc khóa. Về cơ bản, mọi thứ tuân theo NSCoding đều có thể được lưu trữ trong keychain. Đó là một ý tưởng tốt để sử dụng keychain một cách tiết kiệm ngay cả khi chỉ từ quan điểm 'thực hành cá nhân tốt'. Sau khi tất cả một lần nó trong keychain nó là có cho đến khi bạn đặc biệt xóa nó và có lẽ chỉ ứng dụng của bạn sẽ biết chìa khóa để sử dụng để truy cập dữ liệu bạn lưu trữ.

Điểm khởi đầu thực sự tốt để triển khai thứ gì đó lưu trữ cấu trúc dữ liệu vào móc khóa có thể được tìm thấy trên blog Sử dụng Loaf của bạn here của Keith Harrison.

Tóm lại, đây là phương pháp minh bạch duy nhất mà tôi biết có thể đảm bảo tính bền vững của dữ liệu trong quá trình gỡ cài đặt. Các tùy chọn khác như kho lưu trữ bên thứ 3 (Dropbox) hoặc iCloud không phụ thuộc vào mức độ tham gia của người dùng.

+0

Cảm ơn, tôi sẽ xem xét blog bạn đề xuất. – masta

1

Xin lưu ý rằng Apple muốn theo cách này: xóa ứng dụng có nghĩa là xóa tất cả dữ liệu của ứng dụng này. Tôi thích iCloud để tiết kiệm một lượng nhỏ dữ liệu.

0

Một tùy chọn ngoài keychain và iCloud là UIPasteboard của Apple. Here là tham chiếu lớp học. Một số người nghĩ rằng nó không đáng tin cậy, do đó, nó phụ thuộc vào cách duy trì dữ liệu quan trọng là dành cho bạn, tôi đoán.

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