0

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

1 回答 1

0

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

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

我希望你能看到这是荒谬的。

对于初学者来说,如果你真的是那个意思//don't need "ANY" or "ALL",那么你不应该使用NSAllPredicateModifier. 你应该使用NSDirectPredicateModifier.

此外,允许进入operators数组的NSNumber对象是包含内置谓词运算符值之一的对象。

所以:你想完成什么?

于 2012-01-04T15:09:07.763 回答