[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Design issue for MVC and database updates
On Mar 2, 2004, at 3:03 PM, Joakim Danielson wrote:
> Well the problem is not in the database methods really but more what I
> must implement to see which object's how has changed. But I supply
> the method anyway:
>
> - (IBAction)saveToDb:(id)sender
Your best bet is probably key-value observing (Panther only):
http://developer.apple.com/documentation/Cocoa/Conceptual/
KeyValueObserving/
You can observe each item, and whenever the a value changes in the
object, you can add them item to a "changedObjects" mutable array. This
is probably best done outside of the NSArrayController.
Then, you change your database saving action method to this:
- (IBAction)saveToDb:(id)sender {
NSEnumerator *iterator;
JDTransactionType *item;
int newId;
// get the list of changed objects
NSMutableArray * changedObjects = [self changedObjects];
iterator = [changedObjects objectEnumerator];
....
// after you're done, empty the array
[objectsToUpdate removeAllObjects];
}
I haven't yet found a way to ask NSArrayController which object it just
edited (although it seems like a something a lot of people would use).
But if someone else has, that would negate the need to observe each
object separately.
I guess it would be pretty easy to override -objectDidBeginEditing to
check -selection and add it to an array, or something of that nature.
Not sure if it's reasonable to assume the selection is the one being
edited.
- Scott
--
Tree House Ideas
http://treehouseideas.com/