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

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

Reply via email to