3

我有一個對象,其中包含一個名爲pointValueNSMutableArray以及若干方法,其中包括setPointValue。當後一種方法被調用時,它會觸發另一種方法saveTable,該方法將pointValue保存到一個文件(它是一個csv,但在這裏保存方法不起作用)。 我現在有nib文件,其中包含連接到對象中的數組的NSTableViewNSArrayController。 按下筆尖中的按鈕後,它會觸發NSArrayControllerremove:方法,刪除選定的項目,訪問保存新陣列的setPointValue如何觀察對NSArrayController所包含項目的更改

這一切都完美的工作,我的問題開始時,我手動編輯表格中的單元格,並按下回車,數組改變,但setPointValue不會觸發,因此該數組不會被保存到文件。

我絕對是上帝鄙視爲什麼setPointValue沒有引起。我是否必須將數組控件或表列綁定到某個東西?

+2

有沒有這樣的事情`NSArrayControl`。你的意思是`NSArrayController`? 「控制」與「控制器」非常不同。 – 2011-02-16 00:50:13

+2

可能的重複:http://stackoverflow.com/questions/973208/how-to-get-notified-of-changes-to-models-via-an-nsarraycontroller – sosborn 2011-02-16 02:44:16

回答

2

您的NSArrayController只能觀察其內容數組。你想要觀察這個數組的值,這是不一樣的東西。

我強烈建議您閱讀關於Key-Value ObservingCocoa Bindings的所有文檔。

您將看到您需要觀察項目,因爲它們已添加到setPointValue數組中,並在刪除它們時停止觀察它們。您可以通過爲您的setPointValue創建indexed collection accessor methods並設置或拆除其中添加和刪除的項目的觀察來完成此操作。您還需要對receiving notification of the changes對您的觀察項目做出反應才能觸發您的保存方法。

Sosborn是正確的 - 這實際上是一個duplicate of this question。請參閱OP爲自己提供的最直接解決方案所接受的答案(比我對此問題的原始答案更好)。

相關問題