2009-01-03 44 views
2

這是我的設置。帶綁定的可編輯NSTableView將不會在模型中設置值

在我的應用程序委託中,我有一個名爲currentFoo的屬性。 currentFoo屬性設置爲當前選定的Foo實例。每個Foo實例都有一個屬性,它是一個名爲results的NSMutableArray。結果中的對象可以是各種類型,NSNumber,NSString等...

我有一個NSTableView在某些時候顯示,允許用戶在currentFoo中看到結果的集合。還有一個UI允許添加和刪除結果。

NSTableView有一個綁定到NSArrayController的arrangeObjects控制器鍵的單列。我寫了一個NSValueTransformer子類,用於此綁定,將結果數組中找到的各種可能類型轉換爲我希望在表列中顯示的字符串表示形式。

NSArrayController的內容數組綁定連接到NSObjectController的選擇控制器鍵,並將currentFoo.results作爲模型鍵路徑。最後,NSObjectController從應用程序委託中獲取其內容。

這一切都很好,在NSTableView中添加,刪除和顯示currentFoo.results的工作就像我想的那樣。

我的問題是當我嘗試編輯表視圖的內容。我已經將我的NSValueTransformer子類設置爲允許反向轉換並實現了reverseTransformedValue:,單步執行代碼顯示,當我編輯NSTableView行中的值時,它將正確發送到我的值轉換器的該方法,並進行轉換並返回。

然後將錯誤時,綁定嘗試然後更新與反向變換值的模型發生:

Cocoa綁定:錯誤設定值 爲對象0(來自綁定 對象(無效的鍵路徑) ):[setValue:forUndefinedKey:]: 此類不是密鑰值 編碼符合密鑰。

所以基本上有這個數組綁定到表視圖,當用戶編輯行時,我想將字符串轉換回適當的對象。可可綁定給了我這個錯誤,這導致我相信我需要在NSTableColumn綁定的關鍵路徑中設置一些東西,但我不確定是什麼。我嘗試過「自我」,但沒有奏效。

任何幫助表示讚賞。

回答

2

模型關鍵字不能爲空 - 因此會出現錯誤消息。

將結果對象從原始對象(字符串,盒裝數字等)更改爲模型對象(類FooResult),並將綁定的模型鍵路徑設置爲您將要使用的模型對象的屬性名稱有表視圖變異。

基本上,你不能直接綁定到原始對象數組。您必須綁定到模型對象數組的某個屬性。

相關問題