谓词编辑问题

时间:2012-01-04 11:44:36

标签: objective-c cocoa nspredicate nspredicateeditor

在我的自定义滚动视图中,我添加了谓词对象。它在调试堆栈中的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];
}

1 个答案:

答案 0 :(得分:0)

正如你所写的那样,这将定义一个这样的谓词:

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

我希望你能看出这是非感性的。

首先,如果你的意思是//don't need "ANY" or "ALL",那么你就不应该使用NSAllPredicateModifier。您应该使用NSDirectPredicateModifier

此外,允许进入operators数组的内容是NSNumber个对象,其中包含一个内置predicate operator values

那么:你想要完成什么?