谓词编辑器问题

谓词编辑器问题

问题描述:

在我的自定义滚动视图中,我添加了谓词对象。它在调试堆栈中的方法predicateWithSubpredicates中给出错误。这里是我的示例代码,请让我知道是否存在任何错误。谓词编辑器问题

-(void) awakeFromNib 
{ 
    NSPredicateEditor *predicateeditor = [[NSPredicateEditor alloc] initWithFrame:NSMakeRect(0, 0, 200, 150)]; 

    NSArray *leftExpressions = [NSArray arrayWithObjects:[NSExpression expressionForKeyPath:@"date"], nil]; 

    NSAttributeType rightType = NSDateAttributeType; 
    NSComparisonPredicateModifier modifier = NSAllPredicateModifier; //don't need "ANY" or "ALL" 

    NSArray *operators = [NSArray arrayWithObjects:[NSString stringWithString:@"Today"],[NSString stringWithString:@"Tomorrow"],[NSString stringWithString:@"Next week"], nil]; 

    NSUInteger options = 0; 

    NSPredicateEditorRowTemplate *rowTemplate = [[NSPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressionAttributeType:rightType modifier:modifier operators:operators options:options]; 

    [predicateeditor setRowTemplates:[NSArray arrayWithObject:rowTemplate]]; 

    [rowTemplate release]; 

    [self addSubview:predicateeditor]; 

    [predicateeditor addRow:nil]; 

    [predicateeditor displayValuesForRow:1]; 

    [predicateeditor release]; 
} 

当你写的吧,这是要定义这样的断言:

ALL date {"Today", "Tomorrow", "Next Week"} {a user-entered date} 

我希望你能看到,这是无意义的。

对于初学者来说,如果你确实是指//don't need "ANY" or "ALL",那么你不应该使用NSAllPredicateModifier。你应该使用NSDirectPredicateModifier

另外,operators阵列中允许去的东西是NSNumber对象框中的一个内置的predicate operator values

所以:你想完成什么?

+0

我首先关心的是用我的文本替换预定义的运算符等价物。说,对于正确的日期表达,我想{今天,明天,下周,...}; – boom 2012-01-05 03:55:00

+0

我知道了...在templateViews中,我需要返回一个数组,其中将包含我选择的对象。所以,在中间的对象,我会返回一个nspopupbutton与我的列表项....感谢您的答复.... – boom 2012-01-05 05:18:28