On 19 Oct 2013, at 03:58, Jerry Krinock <je...@ieee.org> wrote:

> 
> In Core Data documents, I ignore -[NSDocument isDocumentEdited] and instead 
> use
> -[NSManagedObjectContext hasChanges].
> 
> "In OS X v10.6 and later, this property is key-value observing compliant."
> 

Unfortunately I am not using CoreData but the .NET Entity Framework.
I use Dubrovnik (https://github.com/ThesaurusSoftware/Dubrovnik) to generate a 
set of ObjC -> .NET (Mono) bindings and then using Cocoa bindings to the 
generated Obj-C.
One upshot of this that I don't have a KVO compliant - hasChanges property.

The project uses bindings so my solution is track the change activity via the 
binding activity.
All view bindings are made via a NSViewController subclass's -representedObject.
Any control bound to a key path invoking self calls the setValue:forKeyPath: 
override and marks the document as changed.

I don't know if this is a common technique but I use it regularly to track 
binding changes.

- (void)setValue:(id)value forKeyPath:(NSString *)keyPath
{
    // all bindings that reference self (such as self.representedObject.xxx)
    // will pass through this method   
    if ([keyPath rangeOfString:@"self.representedObject."].location != 
NSNotFound) {
        [self.document updateChangeCount:NSChangeDone];
    }
    [super setValue:value forKeyPath:keyPath];
}

J


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to