我有一個NSPredicateEditor,它是我正在製作的工具的首選項面板的一部分。將NSPredicateEditor綁定到共享用戶默認值控制器
我想存儲用戶的選擇,就像我在NSUserDefaults對象中的任何其他項目一樣,但是當我將綁定添加到NSPredicateEditor對象並運行該工具時,它不會保留數據並進一步導致其他項目默認不顯示。當我拿走綁定並重新編譯時,其他所有內容都會返回。
將NSPredicatedEditor數據存儲爲用戶首選項的最佳方式是什麼?
謝謝。
我有一個NSPredicateEditor,它是我正在製作的工具的首選項面板的一部分。將NSPredicateEditor綁定到共享用戶默認值控制器
我想存儲用戶的選擇,就像我在NSUserDefaults對象中的任何其他項目一樣,但是當我將綁定添加到NSPredicateEditor對象並運行該工具時,它不會保留數據並進一步導致其他項目默認不顯示。當我拿走綁定並重新編譯時,其他所有內容都會返回。
將NSPredicatedEditor數據存儲爲用戶首選項的最佳方式是什麼?
謝謝。
每當NSPredicateEditor
的UI發生更改時,這些更改立即反映在編輯器的objectValue
(即其代表NSPredicate
)中。所以你可以抓住這個謂詞並使用NSKeyedArchiver
進行存檔。這將有效地將謂詞轉換爲NSData
對象,該對象可以保存到NSUserDefaults
。
要重新讀取它,只需抓住NSData
對象,在謂詞編輯器中通過NSKeyedUnarchiver
和setObjectValue:
運行它。
你可以可能通過綁定完成這一點,但我從來沒有嘗試過。 You can bind the value
of an NSPredicateEditor
爲東西,提供NSPredicate
(或 NSData
表格)。您可能還需要指定值變換器是NSKeyedUnarchiveFromData
變壓器。
謝謝。它在Interface Builder中使用NSKeyedUnarchiveFromData。這爲我節省了很多時間。我正在實現一個委託,通過單擊按鈕時謂詞的描述來更新首選項。但是,現在感謝您的簡單回答,我只是在界面構建器中綁定了綁定,並且它正常工作。大! – chaimp 2011-03-07 01:22:01