2009-10-07 36 views

回答

0

在某些情況下,我的應用程序試圖用某個鍵寫入零值,導致同步失敗。現在我在保存之前檢查該值爲零,並且問題得到解決。

4

synchronize方法是圍繞CFPreferencesSynchronize函數的更高級別的API包裝。在文檔中沒有任何關於它的內容,但我認爲synchronize只是返回CFPreferencesSynchronize的結果。由於此CoreFoundation函數可用於同步主機(管理員)和基於網絡的首選項,因此在某些情況下可能會失敗。

在應用程序只是同步其用戶域首選項(在當前用戶的庫目錄中)的最常見情況下,該功能通常不會失敗。我認爲只要忽略synchronize的返回值是安全的。但那只是我的個人意見。

+0

對於CFPreferencesSynchronize引用+1,但對我來說,檢查同步調用的結果是非常重要的。我的應用確實同步了它的用戶域首選項,但我剛剛意識到這也可能會失敗,並且返回值在這種情況下是正確的。在某些情況下,我的應用程序試圖用某個鍵寫入零值,導致同步失敗。現在我在保存之前檢查該值爲零,並且問題得到解決。不管怎樣,謝謝你! – luvieere 2009-10-07 12:54:07

+0

有趣。我會期望導致設置失敗,而不是同步。 – 2013-01-20 05:10:57

0

在我的情況下,我錯誤地使用NSUserDefaults,它會失敗。 例如,我定義了我自己的對象,並將其放入NSUserDefaults或NSDictionary中,它可以放入,但在同步時會失敗。因爲NSUserDefaults不支持所有類型的對象。 據我所知,NSString,NSNumber,NSDictionary ....你可以谷歌它如何使自定義類可以存儲在NSUserDefaults。

+0

NSString,NSNumber和其他本地對象可以存儲在NSUserDefaults中,因爲它們實現NSCoding協議。如果你實現NSCoding協議,你也可以在那裏存儲自己的對象。 – 2015-04-16 12:30:31

相關問題