Re: NSDocument and KVO compliance
Re: NSDocument and KVO compliance
On 19 Oct 2013, at 03:58, Jerry Krinock <email@hidden> 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 (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