2012-03-06 139 views
3

有沒有辦法在iOS中從內部恢復損壞的NSUserDefaults?例如,在這種情況下是否存在特定的異常,然後我可以優雅地迴應?我認爲我的一些用戶在啓動時遇到了由於設置不當而導致的崩潰問題(他們沒有給我發電子郵件,所以我不知道具體情況),如果我的應用在這種情況發生時可以自動重置NSUserDefaults,那將會很好。自動重置損壞NSUserDefaults

一個相關的問題:我如何故意損壞NSUserDefaults來測試這種情況?

+2

一個更好的問題:爲什麼默認成爲首位損壞?這不太可能是NSUserDefaults這樣做的。仔細查看任何寫有默認值的地方,看看你在寫什麼。 – trudyscousin 2012-03-06 18:29:10

+1

當你說損壞,你的意思是它有垃圾值?如果是,請檢查您的代碼是否可以處理意外的值,然後重置爲默認值。 – vipinagg 2012-03-06 19:43:35

+0

這些都是優點。我(非常不幸)不確定崩潰的具體情況,在我的測試中沒有經歷過這些情況,但我確信我可以在讀取默認值時使用更多的安全措施。也許這是一個不明確的問題,沒有更多的細節。 – shawkinaw 2012-03-06 20:51:09

回答

0

我會嘗試一個幸運的猜測:

嘗試在啓動時添加上一個類的對象的檢查中NSUserDefaults。所以在他們之前在代碼中使用它們。或者根據應該在那裏檢查一些其他的東西。

而「腐敗」它,我會嘗試存儲NSArray而不是NSNumber例如。然後重新運行應用程序。

希望它可以幫助

+1

正如上面在評論中所建議的那樣,我最終只是在我的所有NSUserDefaults讀取中添加了更多的代碼,確保這些值是有意義的。經過不少測試,我永遠不會讓NSUserDefaults崩潰,所以它一定是我對導致問題的值所做的。 – shawkinaw 2012-03-11 23:58:36