谓词编辑器问题
问题描述:
在我的自定义滚动视图中,我添加了谓词对象。它在调试堆栈中的方法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。
所以:你想完成什么?
我首先关心的是用我的文本替换预定义的运算符等价物。说,对于正确的日期表达,我想{今天,明天,下周,...}; – boom 2012-01-05 03:55:00
我知道了...在templateViews中,我需要返回一个数组,其中将包含我选择的对象。所以,在中间的对象,我会返回一个nspopupbutton与我的列表项....感谢您的答复.... – boom 2012-01-05 05:18:28