• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Observing edits make to a table using bindings
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Observing edits make to a table using bindings


  • Subject: Observing edits make to a table using bindings
  • From: Randall Meadows <email@hidden>
  • Date: Tue, 20 Jan 2009 16:18:29 -0700

Perhaps I just can't get my head around the terminology sufficiently to search on the right thing...feel free to enlighten me.

I have an NSTableView, whose content is supplied through bindings to an array controller. Column A is supplied via FieldListController.arrangedObjects.name, Column B via FieldListController.arrangedObjects.value; column B is editable, column A is not.

I'm trying to observe when a cell in Column B is edited by

[thing addObserver:self
forKeyPath:@"fieldList"
options:(NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew)
context:nil];


When I edit a field (by double-clicking it) and commit the edit (pressing Return), in my - observeValueForKeyPath:ofObject:change:context: method, "keyPath" is "fieldList" and "object" is the object that owns the fieldList that is being observed.

The NSKeyValueChangeKindKey in the change dictionary is NSKeyValueChangeSetting; NSKeyValueChangeNewKey and NSKeyValueChangeOldKey are both arrays containing all the observed fields in "fieldList". But those "fields" are not the values that are being edited, they are the objects which contain the values that are being edited (i.e., [field value] is what's getting edited (and [field name] is what's displayed in Column A).

OK, so all that makes sense, in that I'm observing "fieldList", and the notification hands me an array (which is fieldList). However, it doesn't tell me *which* field in the array was edited; I have to iterate over all the fields, comparing the values from "old" and "new" to figure out which specific field was edited.

I tried changing the observed keyPath to @"fieldList.value", but that only succeeded in having the table not display anything at all (which doesn't make sense to me either).

Is it possible to know exactly which array element was edited, without registering observers on the entire contents of the array? I figure it has something to do with the keyPath, but the exact something has thus far eluded me.


Thanks! randy _______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Observing edits make to a table using bindings
      • From: Ken Thomases <email@hidden>
    • Re: Observing edits make to a table using bindings
      • From: Quincey Morris <email@hidden>
  • Prev by Date: Re: Draw NSView over QTMovieView
  • Next by Date: Re: Draw NSView over QTMovieView
  • Previous by thread: Re: Interaction with web javascript & cocoa
  • Next by thread: Re: Observing edits make to a table using bindings
  • Index(es):
    • Date
    • Thread