2010-11-19 26 views
1

我有一個編輯窗口有幾個字段,所有綁定到一個NSObjectController的'內容'控制器鍵,它又反過來綁定到'選擇'控制器一個NSArrayController的鍵。我也有一個NSTableView綁定到同一個NSArrayController,以及它的選擇。可可綁定,延遲提交的編輯,直到用戶點擊'確定'

在我的編輯窗口中,只要用戶離開文本框,該值就會傳播回NSTableView。如何在編輯窗口中單擊「確定」之前停止提交的值?

+0

我試圖創建一個新的ManagedObjectContext用於編輯窗口,但即使未調用[上下文保存],更改仍會立即反映出來。我不知道這是否是一種好方法。我仍然綁定到主要的ManagedObjectContext的選擇,這可能會使這不工作,因爲我打算。也許可以將選擇從一個上下文複製到另一個上下文嗎? – 2010-11-19 04:04:31

回答

1

你可以使用一個臨時NSMutableDictionary對象的值存儲在編輯窗口,然後當用戶點擊「確定」使用字典的價值觀實例化一個對象:即:

NSManagedObject* obj = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject"            
         inManagedObjectContext: self.managedObjectContext]; 

[obj setValuesForKeysWithDictionary:tempObject]; 
0

我會建議在編輯窗口中使用瞬態值。然後,當用戶點擊「確定」時,實際分配值。

+0

你的意思是...像[[obj valueTransient]]一樣綁定到'[obj value]'的包裝器,然後在用戶點擊OK的方法中,通過並執行'[obj setValue:[objValueTransient]]' ?我覺得我失去了一些東西。 – 2010-11-19 02:25:07

+0

對不起,我的意思是使用一個完全獨立的對象,直到用戶點擊確定 – griotspeak 2010-11-19 03:12:37