Re: Persistent store removal throwing invalidated NSManagedObject exceptions
Re: Persistent store removal throwing invalidated NSManagedObject exceptions
- Subject: Re: Persistent store removal throwing invalidated NSManagedObject exceptions
- From: Drew McCormack <email@hidden>
- Date: Wed, 01 Apr 2009 16:28:41 +0200
Hi Drew,
When writing a custom to-many accessor in an NSManagedObject
subclass, you need to invoke the correct KVO -will/didChange methods
These are:
-[NSManagedObject willChangeValueForKey:withSetMutation:usingObjects:]
-[NSManagedObject didChangeValueForKey:withSetMutation:usingObjects:]
So your method should change to:
-(void)removeCollectionsObject:(KnowledgeCollection *)anObject {
NSSet *removedObjects = [[NSSet alloc] initWithObjects:&anObject
count:1];
[self willChangeValueForKey:@"collections"
withSetMutation:NSKeyValueMinusSetMutation
usingObjects:removedObjects];
[[self primitiveValueForKey:@"collections"] removeObject:anObject];
[self didChangeValueForKey:@"collections"
withSetMutation:NSKeyValueMinusSetMutation
usingObjects:removedObjects];
[removedObjects release];
}
Hope this helps, there's a full example in the programming guide:
http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html#/
/apple_ref/doc/uid/TP40002154-SW6
Jonathan
Thanks Jonathan. You're absolutely right.
However, when I made the appropriate changes, I have the same issue:
with my new custom remove... accessor, I get the exception, and
without the custom accessor, there is no exception. So something
strange is still going on.
Here is the new accessor for good measure:
-(void)removeCollectionsObject:(KnowledgeCollection *)anObject {
NSSet *removedObjects = [[NSSet alloc] initWithObjects:&anObject
count:1];
[self willChangeValueForKey:@"collections"
withSetMutation:NSKeyValueMinusSetMutation usingObjects:removedObjects];
[[self primitiveValueForKey:@"collections"] removeObject:anObject];
[self didChangeValueForKey:@"collections"
withSetMutation:NSKeyValueMinusSetMutation usingObjects:removedObjects];
[removedObjects release];
}
Drew
_______________________________________________
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