You can get the left and right expressions, etc. by calling through to super:

    NSComparisonPredicate *superPredicate = [super 
predicateWithSubpredicates:subpredicates];
    NSExpression *lhs = [superPredicate leftExpression], *rhs = [superPredicate 
rightExpression];
    ...
    
You would return a new predicate constructed from from the pieces of super's 
predicate, except substitute in your own modifier.

-Peter

On Aug 13, 2010, at 3:12 PM, Gustavo Pizano wrote:

> Peter hello, first of all thanks for the reply.
> 
> So yes, I need to cross a to-many relationship. let me see if I got this 
> straight because my mind was heading in that same direction you commented, 
> just I didn't know what to use or what was the name of the artifact, in this 
> case the NSComparasionPredicateModifier.
> 
> So due the fact that I already have overwritten NSPredicateEditorRowTemplate 
> to enlarge the Floating-Decimal NSTextfield of the right expression, I would 
> take that approach first, overwriden the  predicateWithSubpredicates method 
> and doing the following:
> 
> - (NSPredicate *)predicateWithSubpredicates:(NSArray *)subpredicates{
>       NSPredicate * predicate = [NSComparasionPredicate 
> predicateWithLeftExpression:(NSExpression *)lhs 
> rightExpression:(NSExpression*)rhs modifier: NSAllPredicateModifier
>                                                       
> type:(NSPredicateOperatorType)type options:NSCaseInsensitivePredicateOption];
> }
> 
> I don't know what lhs, rhs and type must be. should I pass [[self 
> leftExpresions] objectAtIndex:0] and also for the rightExpresion? or does it 
> comes from the subpredicates parameter?.
> 
> sorry I got little confused there... :(
> 
> Thx
> 
> Gustavo
> 
> 
> On Aug 13, 2010, at 11:49 PM, Peter Ammon wrote:
> 
>> 
>> On Aug 13, 2010, at 8:45 AM, Gustavo Pizano wrote:
>> 
>>> Hello all once again.
>>> 
>>> I have been searching but I hadn't  found something useful, so please 
>>> before if you know a place I can look at let me know.
>>> 
>>> I have these 3 Entities 
>>> 
>>> ExpenditureGroup:
>>>     name
>>>     icon.
>>> -----------------------
>>> toExpenditures. ->>
>>> 
>>> 
>>> Expenditure
>>>     creationDate
>>>     location
>>>     total
>>> --------------------
>>> toExpenditureGroup ->
>>> toExpenditureDetails ->>
>>> 
>>> 
>>> ExpenditureDetail
>>>     detailDescrb
>>>     subTotal
>>> ----------------------
>>> toExpenditure ->
>>> 
>>> also I have an arrayController that fetches all the ExpenditureGroup 
>>> Entities called _expenditureGorupArrayController.
>>> 
>>> in my predicate editor I added the NSPredicateEditorRowTemplates with key 
>>> paths for  toExpenditures.location, toExpenditures.creationDate,  
>>> toExpenditures.total, toExpenditures.toExpenditrueDetails.detailDescrb and 
>>> finally toExpenditures.toExpenditureDetails.subTotal.
>>> 
>>> I dunno if those last 2 are ok.. my guess NO.
>>> 
>>> anyway, when I set the predicate, Im setting into the 
>>> _expenditureGroupArrayController setFilterPredicate, and pass the predicate 
>>> I just created, but nothing seems to work.
>> 
>> Hi Gustavo,
>> 
>> It looks like you want your predicate to cross a "to-many" relation.  Is 
>> that right?  If so, you need to create a predicate that has an 
>> NSComparisonPredicateModifier that knows how to cross to-many relations 
>> (that is, either NSAllPredicateModifier or NSAnyPredicateModifier).
>> 
>> If you're using NSPredicateEditor to create the predicate, then the 
>> RowTemplate has to know to create a predicate with the right modifier.  
>> Unfortunately you cannot yet set that up in IB, but you can do it 
>> programmatically, by passing the right NSComparisonPredicateModifier to one 
>> of the initWith... methods on NSPredicateEditorRowTemplate (see its header).
>> 
>> You can also subclass NSPredicateEditorRowTemplate and override 
>> -predicateWithSubpredicates: to create an NSPredicate with the proper 
>> modifier.
>> 
>> Hope that helps, let me know if that's not clear,
>> -Peter
>> 
> 

_______________________________________________

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

Reply via email to