2009-10-28 59 views
89

這是這種情況?當您向App Store上的應用程序提交更新時,NSUserDefaults會重置嗎?還是重置?更新時NSUserDefaults是否通過更新Appstore中的應用程序而持續存在?

我的應用程序崩潰,但完全下載時不會崩潰 - 所以我試圖確定什麼可能是在更新後的會話來新下載的會議不同。

乾杯, Nick。

+0

**文檔**和**庫**中的文件將被**保存**,如文檔所述: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/概念/ iPhoneOSProgrammingGuide/RuntimeEnvironment/RuntimeEnvironment.html#// apple_ref/doc/uid/TP40007072-CH2-SW7 – Geri 2011-08-08 10:00:23

回答

101

它們通常不復位,除非用戶刪除的應用程序。對於基本數據,NSUserDefaults是保存數據(如偏好,日期,字符串等)的最佳方式。如果您希望保存圖像和文件,則文件系統是更好的選擇。

+5

在蘋果文檔中是否有某處提到了? – 2009-10-28 17:25:25

+1

對不起 - 我忘了感謝你的快速回答! - 如果任何人都可以找到任何形式的Apple文檔的鏈接,這將是優秀的....在NSUserDefaults的文檔中沒有提到這一點,所以我認爲我有(錯誤地)認爲默認設置被擦除。這似乎是蘋果更新應用程序的最安全的方式! – 2009-10-28 17:33:34

+0

這可能是最安全的方式,但如果用戶在應用程序更新時不得不重新設置所有偏好,那麼這對用戶來說是非常煩人的。我通常每天有三到四次應用程序更新;我相信其他的iPhone用戶還有更多。擦除每個更新的首選項基本上會使我的iPhone無法使用。 – 2009-10-29 01:51:45

7

我beleive答案是肯定的,這將持續存在。這在Apple iPhone OS編程指南中的應用程序目錄章節中也有完整記錄。

4
  1. 直接回答這個問題發佈:YES。
  2. 您的問題: 你的應用進行了由於邏輯問題墜毀。假設你存儲了一個默認的對象,並且應用程序在啓動時(或其他地方)檢查它的值。在您更新時,您可以更改它的檢查或使用方式,例如你期望一個值,但該對象是零,反之亦然。這可能會導致SIGABRT或EXC_BAD_ACCESS。
2

如果你有CoreData模型,在模型中,並更新改變的東西,沒有管理遷移,這就是可能的原因上更新您的應用崩潰......

+0

我期望它可能是一種情況:)不是NSUserdefault – 2014-04-07 12:25:25

1

我有類似的經歷。我們的應用程序在Settings.Bundle/Root.Plist中存儲版本號。這通過iPhone設置應用程序顯示。我們發現,在安裝版本號從應用程序包中加載 - 因此版本號是正確的。但是,在更新中,版本號不會更改。這給用戶以前運行該應用程序版本的印象。我們沒有任何與版本號相關的邏輯,只是用於顯示(診斷故障時可由聯絡中心人員使用)。

我們的經驗是,當NSUserDefaults的用戶更新我們的應用程序沒有得到清除,但設置顯示沒有得到任何更新。

相關問題