何時以及爲什麼NSUserDefaults的同步方法失敗?確保我的值實際寫入NSUserDefaults並提交給NSUserDefaults的最好方法是什麼,以便在應用程序重新啓動後恢復狀態時不會有任何問題?何時以及爲什麼NSUserDefaults的同步方法失敗?
回答
在某些情況下,我的應用程序試圖用某個鍵寫入零值,導致同步失敗。現在我在保存之前檢查該值爲零,並且問題得到解決。
synchronize
方法是圍繞CFPreferencesSynchronize
函數的更高級別的API包裝。在文檔中沒有任何關於它的內容,但我認爲synchronize
只是返回CFPreferencesSynchronize
的結果。由於此CoreFoundation函數可用於同步主機(管理員)和基於網絡的首選項,因此在某些情況下可能會失敗。
在應用程序只是同步其用戶域首選項(在當前用戶的庫目錄中)的最常見情況下,該功能通常不會失敗。我認爲只要忽略synchronize
的返回值是安全的。但那只是我的個人意見。
在我的情況下,我錯誤地使用NSUserDefaults,它會失敗。 例如,我定義了我自己的對象,並將其放入NSUserDefaults或NSDictionary中,它可以放入,但在同步時會失敗。因爲NSUserDefaults不支持所有類型的對象。 據我所知,NSString,NSNumber,NSDictionary ....你可以谷歌它如何使自定義類可以存儲在NSUserDefaults。
NSString,NSNumber和其他本地對象可以存儲在NSUserDefaults中,因爲它們實現NSCoding協議。如果你實現NSCoding協議,你也可以在那裏存儲自己的對象。 – 2015-04-16 12:30:31
- 1. 何時以及爲什麼sprintf失敗?
- 2. 何時以及爲什麼要使用NSUserDefaults的synchronize()方法?
- 3. 爲什麼我的'AssertEquals()'方法失敗?
- 4. 爲什麼RXSwift失敗的方法bindTo
- 5. 爲什麼我的enum.Parse方法失敗?
- 6. Flash:VideoPlayer.load方法有時會失敗......關於爲什麼以及如何恢復的想法?
- 7. 爲什麼此頁面方法失敗?
- 8. 爲什麼測試方法失敗?
- 9. 何時以及爲什麼要使用C#訪問方法
- 10. 爲什麼在工作線程中qml listmodel同步失敗,以及如何解決它?
- 11. 如何/爲什麼可以fork()失敗
- 12. 異步方法失敗叫
- 13. Cookbook同步失敗,未定義的方法'cheffish'爲零:NilClass
- 14. Android:PreferenceManager vs Context.getSharedPreferences()以及爲什麼後者讓我失敗
- 15. 同步方法在做什麼以及心跳元組的頻率是多少?
- 16. 爲什麼此數據庫同步例程失敗?
- 17. 爲什麼驗證失敗時提取到方法?
- 18. 爲什麼當我調用方法時,execvp失敗?
- 19. 有什麼辦法可以找到爲什麼PHP ftp_get失敗?
- 20. 爲什麼以及何時使用process.nextTick?
- 21. 爲什麼以及何時需要Azure?
- 22. RetrieveMultipleRequest&Service.Retrievemultiple - 何時以及爲什麼?
- 23. 爲什麼以及何時使用TreeMap
- 24. 爲什麼以及何時使用__noop?
- 25. 爲什麼以及何時使用LINQ?
- 26. ios nsuserdefaults同步
- 27. NSUserDefaults同步
- 28. Gradle同步失敗
- 29. Github同步失敗
- 30. 同步失敗Gradle
對於CFPreferencesSynchronize引用+1,但對我來說,檢查同步調用的結果是非常重要的。我的應用確實同步了它的用戶域首選項,但我剛剛意識到這也可能會失敗,並且返回值在這種情況下是正確的。在某些情況下,我的應用程序試圖用某個鍵寫入零值,導致同步失敗。現在我在保存之前檢查該值爲零,並且問題得到解決。不管怎樣,謝謝你! – luvieere 2009-10-07 12:54:07
有趣。我會期望導致設置失敗,而不是同步。 – 2013-01-20 05:10:57