• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: setPrimitiveValue:forKey: and to-many relationships
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: setPrimitiveValue:forKey: and to-many relationships


  • Subject: Re: setPrimitiveValue:forKey: and to-many relationships
  • From: "Sean McBride" <email@hidden>
  • Date: Wed, 24 Sep 2008 19:34:43 -0400
  • Organization: Rogue Research

On 9/24/08 3:56 PM, Quincey Morris said:

>> Is that wrong?
>
>I think so. Your "else" statement does what the documentation tells
>you not to do.

Indeed.

>IAC, it's not clear why you need to use setPrimitiveValue: at all.

Thank you for your fresh perspective.  That did not occur to me, no
doubt due to looking at this for too long. :)

>Why
>not something like:
>
>	- (void)setChildren:(NSSet*)value_
>	{
>		[[self mutableSetValueForKey:@"children"] removeAllObjects];
>		[[self mutableSetValueForKey:@"children"] unionSet: value_];
>	}
>
>or:
>
>	@dynamic addChildren;
>	@dynamic removeChildren;
>	- (void)setChildren:(NSSet*)value_
>	{
>		[self removeChildren: [NSSet setWithSet: self.children]];
>		[self addChildren: value_];
>	}
>
>both of which have the advantage of maintaining the inverse
>relationship properly, which your original (according to the
>documentation) does not.

Those look good.  After looking at "Custom To-Many Relationship Accessor
Methods" yet again, another implementation comes to mind, which fits
nicely with Apple's examples:

- (void)setChildren:(NSSet *)value_
{
  [self willChangeValueForKey:@"children"
    withSetMutation:NSKeyValueSetSetMutation
    usingObjects:value_];
  [[self primitiveChildren] setSet:value];
  [self didChangeValueForKey:@"children"
    withSetMutation:NSKeyValueSetSetMutation
    usingObjects:value_];
}

The reason I bring this up, is because I noticed that mogenerator 1.10
is generating code that incorrectly uses setPrimitiveValue:forKey: as
originally described.

Thanks Quincey!

--
____________________________________________________________
Sean McBride, B. Eng                 email@hidden
Rogue Research                        www.rogue-research.com
Mac Software Developer              Montréal, Québec, Canada


_______________________________________________

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

  • Follow-Ups:
    • Re: setPrimitiveValue:forKey: and to-many relationships
      • From: Quincey Morris <email@hidden>
References: 
 >setPrimitiveValue:forKey: and to-many relationships (From: "Sean McBride" <email@hidden>)
 >Re: setPrimitiveValue:forKey: and to-many relationships (From: Quincey Morris <email@hidden>)

  • Prev by Date: Re: unable to break out of runloop because timers are fired andthen the loop waits
  • Next by Date: Re: setPrimitiveValue:forKey: and to-many relationships
  • Previous by thread: Re: setPrimitiveValue:forKey: and to-many relationships
  • Next by thread: Re: setPrimitiveValue:forKey: and to-many relationships
  • Index(es):
    • Date
    • Thread