2009-10-28 13 views
89

Đây có phải là trường hợp không? Do NSUserDefaults có được đặt lại khi bạn gửi bản cập nhật cho ứng dụng trên App Store hay chúng được đặt lại không?NSUserDefault có tồn tại thông qua Cập nhật cho ứng dụng trong Appstore không?

Ứng dụng của tôi bị lỗi khi được cập nhật nhưng không bị lỗi khi tải xuống đầy đủ - vì vậy tôi đang cố gắng xác định những gì có thể khác trong phiên được cập nhật cho phiên được tải xuống mới.

Chúc mừng, Nick.

+0

Các tệp trong ** Tài liệu ** và ** Thư viện ** sẽ được ** giữ nguyên ** làm tài liệu xác nhận quyền sở hữu: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/ Conceptual/iPhoneOSProgrammingGuide/RuntimeEnvironment/RuntimeEnvironment.html # // apple_ref/doc/uid/TP40007072-CH2-SW7 – Geri

Trả lời

101

Chúng thường không được đặt lại trừ khi người dùng xóa ứng dụng. Đối với dữ liệu cơ bản, NSUserDefaults là cách tốt nhất để lưu dữ liệu như sở thích, ngày tháng, chuỗi, vv Nếu bạn đang tìm cách lưu hình ảnh và tệp, hệ thống tệp là đặt cược tốt hơn.

+5

Có nơi nào đó trong tài liệu của Apple được đề cập không? –

+1

Xin lỗi - Tôi quên cảm ơn vì câu trả lời nhanh của bạn! - Nếu bất cứ ai có thể tìm thấy một liên kết đến bất kỳ hình thức tài liệu của Apple nói điều này, nó sẽ là tuyệt vời .... Trong tài liệu cho NSUserDefaults nó không nói gì về điều này, vì vậy tôi nghĩ rằng tôi đã (không chính xác) giả định mặc định bị xóa sổ. Đây có vẻ là cách an toàn nhất để Apple cập nhật ứng dụng chắc chắn! –

+0

Nó có thể là cách an toàn nhất, nhưng nó sẽ gây phiền toái cho người dùng nếu họ phải thiết lập lại tất cả các sở thích của họ bất cứ khi nào một ứng dụng được cập nhật. Tôi thường có ba hoặc bốn bản cập nhật ứng dụng mỗi ngày; Tôi chắc rằng những người dùng iPhone khác thậm chí còn nhiều hơn nữa. Tùy chọn xóa cho từng bản cập nhật về cơ bản sẽ làm cho iPhone của tôi không sử dụng được. –

7

Tôi tin rằng câu trả lời là CÓ, nó sẽ tồn tại. Điều này cũng được ghi đầy đủ trong chương Application Directory trong Hướng dẫn lập trình hệ điều hành Apple iPhone.

4
  1. Trả lời trực tiếp cho câu hỏi đã đăng: CÓ.
  2. Vấn đề của bạn: Ứng dụng của bạn bị lỗi do các vấn đề về logic. Giả sử bạn lưu trữ một đối tượng mặc định và ứng dụng sẽ kiểm tra giá trị của nó khi khởi chạy (hoặc ở nơi khác). Khi cập nhật, bạn có thể thay đổi cách được kiểm tra hoặc sử dụng, ví dụ: bạn mong đợi một giá trị, nhưng đối tượng là không, hoặc ngược lại. Điều này có thể gây ra SIGABRT hoặc EXC_BAD_ACCESS.
2

Nếu bạn đã có mô hình CoreData và bạn đã thay đổi một cái gì đó trong mô hình và cập nhật của bạn, mà không quản lý di cư, thats lẽ lý do tại sao treo ứng dụng của bạn trên bản cập nhật ...

+0

Tôi hy vọng rằng nó có thể là một trường hợp :) không phải là một NSUserdefault –

1

Tôi có một kinh nghiệm tương tự. Ứng dụng của chúng tôi lưu trữ số phiên bản trong Settings.Bundle/Root.Plist. Điều này được hiển thị thông qua ứng dụng Cài đặt iPhone. Những gì chúng tôi thấy là trên Cài đặt số phiên bản được tải từ gói ứng dụng - do đó số phiên bản là chính xác. Tuy nhiên, trên bản cập nhật, số phiên bản không thay đổi. Điều này mang lại ấn tượng cho người dùng đang chạy phiên bản trước của ứng dụng. Chúng tôi không có bất kỳ logic liên quan đến số phiên bản, nó chỉ để hiển thị (nó có thể được sử dụng bởi nhân viên trung tâm liên lạc khi chẩn đoán lỗi).

Trải nghiệm của chúng tôi là NSUserDefaults không bị xóa khi người dùng cập nhật ứng dụng của chúng tôi, nhưng màn hình Cài đặt cũng không được cập nhật.