On May 29, 2014, at 2:52 PM, Trygve Inda wrote:

> I have an array of objects. One property of this object is a ratio stored as
> a string (e.g. 5:8, 9:4, 21:2) etc.
> 
> I have a category on NSString:
> 
> -(NSComparisonResult)compareAspectString:(NSString *)aString
> 
> This does the division and compares the aspect ratios correctly.
> 
> Now I need a predicate to do this.
> 
> My Predicate says:
> 
> Printing description of predicate:
> aspectRatio >[cd] "4:3"
> 
> But it is just doing straight string comparison. How can I get the predicate
> to use by comparison method?

You can do this, but not using a predicate format string.

One approach would be to use +[NSComparisonPredicate 
predicateWithLeftExpression:rightExpression:customSelector:].  The selector 
there, though, isn't a comparator.  It returns TRUE if the comparison "passes"; 
FALSE otherwise.  For example, you would be implementing a "greater-than-ratio" 
comparison, so the custom selector when sent to one value and passed another 
value would return TRUE if and only if the first value (the receiver) is 
greater than (as a ratio) the second value (the argument).

Another approach would be +[NSPredicate predicateWithBlock:].

Regards,
Ken


_______________________________________________

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

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

Reply via email to