Skip to content
This repository
Browse code

[CHANGE] Remove machine.m implementations of to-many relationship set…

…ters.

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.
  • Loading branch information...
commit 665a8d65a54f3fc95b8ffff8ec6ef708634b7baa 1 parent fb7eb17
Jonathan 'Wolf' Rentzsch authored January 03, 2010
14  templates/machine.h.motemplate
@@ -27,11 +27,6 @@
27 27
 <$foreach Relationship noninheritedRelationships do$>
28 28
 <$if Relationship.isToMany$>
29 29
 @property (nonatomic, retain) NSSet* <$Relationship.name$>;
30  
-
31  
-- (void)add<$Relationship.name.initialCapitalString$>:(NSSet*)value_;
32  
-- (void)remove<$Relationship.name.initialCapitalString$>:(NSSet*)value_;
33  
-- (void)add<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_;
34  
-- (void)remove<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_;
35 30
 - (NSMutableSet*)<$Relationship.name$>Set;
36 31
 <$else$>
37 32
 @property (nonatomic, retain) <$Relationship.destinationEntity.managedObjectClassName$>* <$Relationship.name$>;
@@ -48,3 +43,12 @@
48 43
 <$endif$>
49 44
 <$endforeach do$>
50 45
 @end
  46
+
  47
+@interface _<$managedObjectClassName$> (CoreDataGeneratedAccessors)
  48
+<$foreach Relationship noninheritedRelationships do$><$if Relationship.isToMany$>
  49
+- (void)add<$Relationship.name.initialCapitalString$>:(NSSet*)value_;
  50
+- (void)remove<$Relationship.name.initialCapitalString$>:(NSSet*)value_;
  51
+- (void)add<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_;
  52
+- (void)remove<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_;
  53
+<$endif$><$endforeach do$>
  54
+@end
30  templates/machine.m.motemplate
@@ -41,42 +41,12 @@
41 41
 @dynamic <$Relationship.name$>;
42 42
 
43 43
 	<$if Relationship.isToMany$>
44  
-
45  
-- (void)add<$Relationship.name.initialCapitalString$>:(NSSet*)value_ {
46  
-	[self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value_];
47  
-	[[self primitiveValueForKey:@"<$Relationship.name$>"] unionSet:value_];
48  
-	[self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value_];
49  
-}
50  
-
51  
--(void)remove<$Relationship.name.initialCapitalString$>:(NSSet*)value_ {
52  
-	[self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value_];
53  
-	[[self primitiveValueForKey:@"<$Relationship.name$>"] minusSet:value_];
54  
-	[self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value_];
55  
-}
56  
-	
57  
-- (void)add<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_ {
58  
-	NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value_ count:1];
59  
-	[self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
60  
-	[[self primitiveValueForKey:@"<$Relationship.name$>"] addObject:value_];
61  
-	[self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
62  
-	[changedObjects release];
63  
-}
64  
-
65  
-- (void)remove<$Relationship.name.initialCapitalString$>Object:(<$Relationship.destinationEntity.managedObjectClassName$>*)value_ {
66  
-	NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value_ count:1];
67  
-	[self willChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
68  
-	[[self primitiveValueForKey:@"<$Relationship.name$>"] removeObject:value_];
69  
-	[self didChangeValueForKey:@"<$Relationship.name$>" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
70  
-	[changedObjects release];
71  
-}
72  
-
73 44
 - (NSMutableSet*)<$Relationship.name$>Set {
74 45
 	[self willAccessValueForKey:@"<$Relationship.name$>"];
75 46
 	NSMutableSet *result = [self mutableSetValueForKey:@"<$Relationship.name$>"];
76 47
 	[self didAccessValueForKey:@"<$Relationship.name$>"];
77 48
 	return result;
78 49
 }
79  
-
80 50
 	<$endif$>
81 51
 <$endforeach do$>
82 52
 

0 notes on commit 665a8d6

Please sign in to comment.
Something went wrong with that request. Please try again.