Aggiornamento Core Data dalla consuetudine NSCell
-
27-10-2019 - |
Domanda
Ho un NSCell
personalizzato (in realtà sottoclasse NSTextFieldCell
), che viene utilizzato sia in un editor stand-alone, e in un NSTableColumn
(legato a Core Data attraverso NSArrayController
). Quando l'utente modifica il valore, che io chiamo -[NSCell setObjectValue:]
per aggiornare il valore (si tratta di un NSNumber
). Questo funziona in l'editor standalone, poiché quando è fatto io aggiornare manualmente il legame su di esso.
[self setObjectValue:[NSNumber numberWithInt:newValue]];
Questo passo (l'aggiornamento del campo associato) non è presente quando la cella è in una NSTableView
- gli spettacoli valore aggiornato fino durante la modifica dell'utente (con l'inseguimento del mouse), ma non appena è finita, il valore scatta di nuovo al persistito valore.
Il NSTableColumn
è associato a una chiave di -[NSArrayController arrangedObjects]
. C'è una sorta di invito a "commitEditing" o "updateBinding" che mi manca? Non riuscivo a trovare nessuna funzioni utili nella documentazione per NSCell
o NSTableView
.
Soluzione
Per risolvere questo problema, ho implementato -tableView:setObjectValue:forTableColumn:row:
nel mio NSArrayController
sottoclasse. Ottengo l'istanza del mio NSManagedObject
sottoclasse dal ragionamento fila, e quindi assegnare manualmente il nuovo modello della tesi ObjectValue. Io ancora non so perché ciò sia necessario, quando le celle di testo fanno automaticamente, ma funziona.