2015-04-23 60 views
3

我看到這種奇怪的行爲,這似乎是特定於我的具體設備或我的建築環境(我的同事在構建相同的代碼時沒有此問題)。每當我從Xcode數據中啓動應用程序NSUserDefaults都不見了。當我殺死應用程序並重新啓動它時,情況也是如此NSUserDefaults中的數據在每次應用程序重新啓動時都消失

我已經嘗試重新啓動Xcode,我的筆記本電腦,設備,清理項目和派生數據 - 沒有任何幫助。更新數據後我會打電話synchronize(),所以應該堅持。但事實並非如此。我在控制檯中看不到任何錯誤。

這個問題的原因是什麼?我該如何解決它?這是由一些奇特的隱藏項目設置造成的嗎?

我還想知道數據在重新啓動時是否重置,或者在調用synchronize()時未保存。我可以檢查保存NSUserDefaults的文件內容嗎?


UPDATE:一個有趣的細節。在Simulator中殺死應用程序後,我無法再從Xcode啓動它(獲取「The operation couldn’t be completed. (LaunchServicesError error 0.)」)。我必須使用iOS Simulator -> Reset Content and Settings才能在仿真器中再次運行應用程序。


更新2:我試圖找到該文件,在其中iPhone模擬器商店NSSharedPreferences的建議here,但它不存在。

+0

儘量不要殺應用程序,但關閉它像正常的應用程序(二點擊按鈕來指揮+在模擬器Shift + H鍵) – Edig

+0

@EduardoIglesias是,這樣的設置將不會被複位。但是,我是否也應該問我的用戶不要殺這個應用程序? –

+0

當您想要生存的內容發生變化時,您可以同步用戶默認值。 [[NSUserDefaults standardUserDefaults]同步]。 – gnasher729

回答

1

還有就是將禁用但是堅持到NSUserDefaults的,沒有花哨的設置,還有,你需要考慮幾個因素:

  1. 確保您存檔並添加之前不是簡單的值以外的其他解除封存對象並從NSUserDefaults中檢索它們
  2. 確保您瞭解持久數據(App,Device,...)的範圍,請查看NSUserDefault類中的相應方法。
  3. 確保你的第三方庫不重置NSUserDefault,這是我的情況的問題。在應用程序啓動時進行調試,並嘗試確定是否在開始時以及何時「鬆動」它有價值。這有助於我的情況。
0

嘗試製作一個新的「單視圖應用程序」並添加您用於保存NSUserDefault,didFinishLaunchingWithOptions中的數據的代碼。看看問題是否仍然存在。

相關問題