Yeah I could experiment with Method Swizzling but that is just playing dirty. I will follow your advice and just move away from this implementation into something nicer like a dictionary. After all I can always do
[dict valueForKey:[ob objectId]]; to get the same result as [set member:ob] Thank you very much for Clark, Thomas and Jens. Regards to all, Alejandro RodrÃguez On Mar 16, 2010, at 5:42 PM, Clark Cox wrote: > On Tue, Mar 16, 2010 at 2:18 PM, Alejandro Rodriguez > <l.mephi...@gmail.com> wrote: >> You were right, my equality is not transitive. >> >> id ob = [[objectClass alloc] initWithId:@"hello"]; >> [ob isEqual:@"hello"]; //returns YES >> [@"hello" isEqual:ob]; //returns NO >> >> That may very well be the problem... now... I have no idea on how I will >> make the second test return YES. > > I doubt that you can. You'll likely have to give up on the idea of > being able to pass a string to -member:. You could implement the check > in a method of your own in a category on NSSet. > >> doesn't that depend on the implementation of isEqual of the asking object in >> this case NSString? > > Yes. > >> Have any of you had to deal with this before? I'll dive into the docs and >> see what details I find that might be useful. >> >> Seems we are getting somewhere >> cheers! >> >> Alejandro >> >> On Mar 16, 2010, at 2:45 PM, Clark Cox wrote: >> >>> On Tue, Mar 16, 2010 at 11:35 AM, Thomas Davie <tom.da...@gmail.com> wrote: >>>>> Your code doesn't account for the possibility that the order of >>>>> comparison might happen in the other order (i.e. [@"123" isEqual: >>>>> object]). I wouldn't be surprised if NSSet is assuming that equality >>>>> is transitive (i.e. [a isEqual: b] == [b isEqual: a]). >>>> >>>> For reference, this property is not transitivity, the transitivity >>>> relation is: >>>> >>>> a -> b ^ b -> c => a -> c (for some relation ->) >>>> >>>> The one you're looking for is commutativity. >>> >>> Indeed; must have been echos of my previous life as a C++ programmer >>> creeping into the Obj-C part of my brain (in C++, the std::set class >>> uses less than, instead of equality, where transitivity is the >>> important property, not commutativity). >>> >>> :) >>> >>> >>> >>> -- >>> Clark S. Cox III >>> clarkc...@gmail.com >> >> > > > > -- > Clark S. Cox III > clarkc...@gmail.com _______________________________________________ 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