• 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
Re: Observer CoreData Objects changes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Observer CoreData Objects changes


  • Subject: Re: Observer CoreData Objects changes
  • From: Dex Morgan <email@hidden>
  • Date: Wed, 30 Apr 2008 01:22:57 +0200

Hello Ben,
Thanks a lot for your help.
I've used

[self addObserver: forKeyPath: options: context: NULL];

inside awakeFromFetch/FromInsert of my observed class in order to get each notification.
It works very well.
Again thank you


Il giorno 27/apr/08, alle ore 06:44, Ben Lachman ha scritto:

I'm not completely clear on what you're wanting, but you might try this:

•Have your controller observe the managed object context's NSManagedObjectContextObjectsDidChangeNotification, the userinfo of this note contains the key NSInsertedObjectsKey and NSDeletedObjectsKey which should let you know which objects to start/ stop observing. Make sure you read the docs about this note and when it's sent, etc.

•In your controller call addObserver:forKeyPath:... on each of the newly added objects that you're interested in.

In general though it is easier to bind to stuff through a pre-built controller that is in entity mode than observe all the objects yourself. KVO is definitely the way to go though since it gives you change info.

HTH,
->Ben
--
Ben Lachman
Acacia Tree Software

http://acaciatreesoftware.com

email: email@hidden
twitter: @benlachman
mobile: 740.590.0009



On Apr 26, 2008, at 6:03 PM, Dex Morgan wrote:

Hello,
I need to observe from a controller class when a particular attribute of a NSManagedObject in my persistent store is changed.
I've tried with:
- (BOOL)validateValue:(id *)value forKey:(NSString *)key error: (NSError **)error


in my class. Unfortunatly I need to keep the old value in order to make a comparison between it and the new value (id* value) and this method does not allow it.
So I've tried using


- (void) addObserver:<#(NSObject *)observer#> forKeyPath:<#(NSString *)keyPath#> options:<#(NSKeyValueObservingOptions)options#> context:<#(void *)context#>

but the only way to keep changes of all objects is to put this method into the init of my class (inside a subclassed method - (id)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(NSManagedObjectContext *)context).
Bleah, it's not a great solution right?
Anyone can point to me to the right way?


Thanks in advanced
_______________________________________________

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


_______________________________________________

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


References: 
 >Observer CoreData Objects changes (From: Dex Morgan <email@hidden>)
 >Re: Observer CoreData Objects changes (From: Ben Lachman <email@hidden>)

  • Prev by Date: Predicate to get objects in a NSDate interval
  • Next by Date: Re: Debugger at odds with reality? [SOLVED]
  • Previous by thread: Re: Observer CoreData Objects changes
  • Next by thread: Calculating file size
  • Index(es):
    • Date
    • Thread