2011-09-27 38 views
1

我有一個plist文件,它包含我需要在組織爲詞典字典的應用程序中顯示的信息。我剛剛開始編程Cocoa,所以我不確定最好的方式去做這件事。很明顯,我可以手動完成所有工作,並編寫循環並將數據添加到UI元素,但在我看來,綁定和提供的控制器應該讓我更輕鬆地完成此操作。我可以使用一個NSDictionaryController字典的詞典?

我特別想知道是否有一個直接的方式(例如,使用主要接口生成器)來讀取plist文件的NSDictionary我得到的鏈接,這本身就包含進一步NSDictionary元素,又包含名稱 - 值字符串對,到適當的用戶界面元素 - 可能是大綱視圖或瀏覽器。

或者,數據可以放入功能瀏覽器類型面板(如Excel中),其中頂級鍵是功能類別,下一級是該類別中的功能,並且我可以只填充文本區域最低級別的細節 - 即最終字典中的數值數據。

+1

你看過NSDictionaryController嗎? – sosborn

+0

我結束了從plist的字典數據加載到自定義對象,並以此方式。 – kallikak

回答

0

我不認爲你將能夠用NSBrowser或NSOutlineView做到這一點。我之所以這麼說,是因爲如果你在使用這些視圖的綁定,你需要使用一個NSTreeController。 NSTreeController提供了指定模型中的哪些鍵指示當前對象是否具有子對象(isLeaf)以及如何訪問子對象(子對象)的功能。

所以,如果您打算使用這兩種視圖中的一種,則必須能夠向模型中添加其他鍵和屬性才能這樣做。很多時候,當我使用NSOutlineView和NSBrowser時,我發現最簡單的方式是完全跳過綁定,只使用所有代表的數據源方法。它們需要更多的代碼,但它們並不難拼湊在一起,有時如果我的數據模型很複雜,或者數據的格式不容易通過NSTreeController進行抽取,我有時更願意綁定它們。

但是,您可以通過執行以下操作來使用NSTableView。

  1. 在您的NIB中創建一個NSDictionaryController。
  2. 在讀取plist的控制器中,爲NSDictionaryController創建一個出口,並使用Interface Builder連接出口。
  3. 在讀取plist的代碼中,添加一行代碼,將代碼的NSDictionaryController內容設置爲plist的根字典。
  4. 在你的NIB中,創建一個NSArrayController。將數組控制器的「Content Array」綁定綁定到NSDictionaryController。對於「Controller Key」綁定屬性,請指定「arrangedObjects」。
  5. 現在拿一個NSTableView並把它放在你的NIB中。將每個NSTableColumn的「Value」綁定綁定到NSArrayController和「Controller Key」綁定屬性,從字典中指定要在表列中顯示其值的鍵。
+0

感謝您的詳細回覆。我會放棄它。 – kallikak