Re: NSPredicate and custom sort selector
Re: NSPredicate and custom sort selector
- Subject: Re: NSPredicate and custom sort selector
- From: Trygve Inda <email@hidden>
- Date: Fri, 30 May 2014 07:09:39 -0700
- Thread-topic: NSPredicate and custom sort selector
> 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
>
>
Is there any way to take the value entered by the user in the Predicate
Editor (e.g. "4:3") and convert it through a Value Transformer. That way I
could convert it to 1.3333. But when the user went back into the editor, I
would want to show the value 4:3 and not the transformed value.
_______________________________________________
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