From 665a8d65a54f3fc95b8ffff8ec6ef708634b7baa Mon Sep 17 00:00:00 2001 From: rentzsch Date: Sun, 3 Jan 2010 23:20:32 -0600 Subject: [PATCH] [CHANGE] Remove machine.m implementations of to-many relationship setters. Mike Abdullah pointed out in http://www.mac-developer-network.com/columns/coredata/coredatajan10/ that Core Data on 10.5 and iPhone dynamically supply to-many relationship setters, so there's no reason to carry our own implementation. That's code that looks like this: - (void)addChildren:(NSSet*)value_ { [self willChangeValueForKey:@"children" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value_]; [[self primitiveValueForKey:@"children"] unionSet:value_]; [self didChangeValueForKey:@"children" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value_]; } -(void)removeChildren:(NSSet*)value_ { [self willChangeValueForKey:@"children" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value_]; [[self primitiveValueForKey:@"children"] minusSet:value_]; [self didChangeValueForKey:@"children" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value_]; } - (void)addChildrenObject:(ChildMO*)value_ { NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value_ count:1]; [self willChangeValueForKey:@"children" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; [[self primitiveValueForKey:@"children"] addObject:value_]; [self didChangeValueForKey:@"children" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; [changedObjects release]; } - (void)removeChildrenObject:(ChildMO*)value_ { NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value_ count:1]; [self willChangeValueForKey:@"children" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects]; [[self primitiveValueForKey:@"children"] removeObject:value_]; [self didChangeValueForKey:@"children" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects]; [changedObjects release]; } I've deleted the machine.m code and moved the method declarations into a category named $_CLASS_NAME(CoreDataGeneratedAccessors) in machine.h to avoid "method not implemented" build warnings. It probably would be nice to upgrade "contributed templates/rentzsch non-dynamic" to do the same (placing the machine.m code in if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 endif blocks) but I'm not going to for this commit. --- templates/machine.h.motemplate | 14 +++++++++----- templates/machine.m.motemplate | 30 ------------------------------ 2 files changed, 9 insertions(+), 35 deletions(-) diff --git a/templates/machine.h.motemplate b/templates/machine.h.motemplate index 33a2529c..9ad6ea61 100644 --- a/templates/machine.h.motemplate +++ b/templates/machine.h.motemplate @@ -27,11 +27,6 @@ <$foreach Relationship noninheritedRelationships do$> <$if Relationship.isToMany$> @property (nonatomic, retain) NSSet* <$Relationship.name$>; - -- (void)add<$Relationship.name.initialCapitalString$>:(NSSet*)value_; -- (void)remove<$Relationship.name.initialCapitalString$>:(NSSet*)value_; -- (void)add<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_; -- (void)remove<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_; - (NSMutableSet*)<$Relationship.name$>Set; <$else$> @property (nonatomic, retain) <$Relationship.destinationEntity.managedObjectClassName$>* <$Relationship.name$>; @@ -48,3 +43,12 @@ <$endif$> <$endforeach do$> @end + +@interface _<$managedObjectClassName$> (CoreDataGeneratedAccessors) +<$foreach Relationship noninheritedRelationships do$><$if Relationship.isToMany$> +- (void)add<$Relationship.name.initialCapitalString$>:(NSSet*)value_; +- (void)remove<$Relationship.name.initialCapitalString$>:(NSSet*)value_; +- (void)add<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_; +- (void)remove<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_; +<$endif$><$endforeach do$> +@end diff --git a/templates/machine.m.motemplate b/templates/machine.m.motemplate index 9bf88416..62189a61 100644 --- a/templates/machine.m.motemplate +++ b/templates/machine.m.motemplate @@ -41,42 +41,12 @@ @dynamic <$Relationship.name$>; <$if Relationship.isToMany$> - -- (void)add<$Relationship.name.initialCapitalString$>:(NSSet*)value_ { - [self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value_]; - [[self primitiveValueForKey:@"<$Relationship.name$>"] unionSet:value_]; - [self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value_]; -} - --(void)remove<$Relationship.name.initialCapitalString$>:(NSSet*)value_ { - [self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value_]; - [[self primitiveValueForKey:@"<$Relationship.name$>"] minusSet:value_]; - [self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value_]; -} - -- (void)add<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_ { - NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value_ count:1]; - [self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; - [[self primitiveValueForKey:@"<$Relationship.name$>"] addObject:value_]; - [self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; - [changedObjects release]; -} - -- (void)remove<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_ { - NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value_ count:1]; - [self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects]; - [[self primitiveValueForKey:@"<$Relationship.name$>"] removeObject:value_]; - [self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects]; - [changedObjects release]; -} - - (NSMutableSet*)<$Relationship.name$>Set { [self willAccessValueForKey:@"<$Relationship.name$>"]; NSMutableSet *result = [self mutableSetValueForKey:@"<$Relationship.name$>"]; [self didAccessValueForKey:@"<$Relationship.name$>"]; return result; } - <$endif$> <$endforeach do$>