1

我遇到了一些場景,我想在NSTableView的NSDictionary中顯示一些條目。 (我直覺用戶NSDictionaryController總是挫敗的需要使每個對象執行copyWithZone,我覺得這是一個荒謬的要求是致命的可用性...)將NSArrayController綁定到NSDictionary allValues

而是,我試圖綁定NSArrayController指向NSDictionary的allValues屬性,意圖綁定表中各個對象列的各種屬性。但是,我無法通過數組控制器的Controller Key和Model Key Path屬性找到在Cocoa中指定此綁定的正確方法。

當我嘗試將數組直接綁定到allValues時,數組控制器的arrangedObjects屬性始終爲空 - 即使將對象添加到字典時,當添加由[dictionary willChangeValueForKey:@「allValues」]和[字典didChangeValueForKey:@「allValues」]調用,即使在添加對象後在數組控制器上調用setContent:之後。

當然,我發現這個堆棧溢出線程:

Binding to an NSDictionary's "allValues" array

...並嘗試了各種版本@「@ allValues」示範關鍵路徑領域,但沒有產生預期的效果。

因此,這裏是我的問題:如果我有ArrayControllerOne綁定到一個對象,我想ArrayControllerTwo綁定到一個NSDictionary屬性(稱爲「實例」)內ArrayControllerOne.selection的allValues財產,我應該在進入控制器密鑰和模型密鑰路徑字段?

在此先感謝...

+0

我不明白爲什麼當這個字典是另一個數組控制器中的選擇時,爲什麼要綁定到allValues?我很難想象你想要做什麼。如果你可以給出一個例子,說明哪種數據綁定到arrayController1會有幫助。 – rdelmar

+0

在我的場景中,字典不是「另一個陣列控制器中的選擇」。它只是一個類實例的成員。也就是說,我有一個包含字典成員的對象,並且我想提供一個表,每列都反映了字典中每個* value *的一些信息。我還想讓用戶在表格中選擇一行,並訪問該行表示的字典值。爲了完成這兩項任務,我想創建一個綁定到my_obj.my_dict.allValues的數組控制器,以及一個具有綁定到數組控制器中條目屬性的列表的表。 –

回答

2

你一定錯過了,因爲我發現,您可以通過使用字典陣列控制器,以字典的allValues的內容數組綁定。@ allValues(不含引號),其中字典是字典的屬性名稱。爲什麼這個工作,我不知道 - 我找不到任何文件。

順便說一句,如果我添加一個新的鍵值對字典,我使用self.dict = _dict;獲取表視圖進行更新。

+0

是的,我試過了。當我這樣做時,數組控制器的arrangedObjects數組包含一個對象,而不管字典中有多少條目。 (由於Cocoa調試器的侷限性,我甚至不知道它是什麼類型的對象)。我認爲該語法不會調用allValues訪問器方法,並將結果呈現在arrangeObjects中,而只是將allValues訪問器分配給排列的對象。 –

+0

奇怪的是,當我做到這一點時,它表現正常,我的表視圖顯示了字典中每個值的正確對象。也許在你的代碼中有其他錯誤 - 我只用一個簡單的字典就完成了。 – rdelmar

+0

我會再試一次,並會回報。感謝您的貢獻。 –

相關問題