2011-03-06 25 views
2

我有一個NSPredicateEditor,它是我正在製作的工具的首選項面板的一部分。將NSPredicateEditor綁定到共享用戶默認值控制器

我想存儲用戶的選擇,就像我在NSUserDefaults對象中的任何其他項目一樣,但是當我將綁定添加到NSPredicateEditor對象並運行該工具時,它不會保留數據並進一步導致其他項目默認不顯示。當我拿走綁定並重新編譯時,其他所有內容都會返回。

將NSPredicatedEditor數據存儲爲用戶首選項的最佳方式是什麼?

謝謝。

回答

2

每當NSPredicateEditor的UI發生更改時,這些更改立即反映在編輯器的objectValue(即其代表NSPredicate)中。所以你可以抓住這個謂詞並使用NSKeyedArchiver進行存檔。這將有效地將謂詞轉換爲NSData對象,該對象可以保存到NSUserDefaults

要重新讀取它,只需抓住NSData對象,在謂詞編輯器中通過NSKeyedUnarchiversetObjectValue:運行它。

你可以可能通過綁定完成這一點,但我從來沒有嘗試過。 You can bind the value of an NSPredicateEditor爲東西,提供NSPredicate(或 NSData表格)。您可能還需要指定值變換器是NSKeyedUnarchiveFromData變壓器。

+0

謝謝。它在Interface Builder中使用NSKeyedUnarchiveFromData。這爲我節省了很多時間。我正在實現一個委託,通過單擊按鈕時謂詞的描述來更新首選項。但是,現在感謝您的簡單回答,我只是在界面構建器中綁定了綁定,並且它正常工作。大! – chaimp 2011-03-07 01:22:01