Проблема редактора предикатов - PullRequest
0 голосов
/ 04 января 2012

В моем собственном представлении прокрутки я добавил объект предиката, как показано ниже. Это дает ошибку в методах ПредикатWithSubpredicates в стеке отладки. Вот мой пример кода, пожалуйста, дайте мне знать, если есть какие-либо ошибки.

-(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 голосов
/ 04 января 2012

Как вы уже написали, этот предикат будет определен следующим образом:

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

Надеюсь, вы видите, что это бессмысленно.

Для начала, если вы действительно имеете в виду, что //don't need "ANY" or "ALL", то вам не следует использовать NSAllPredicateModifier. Вы должны использовать NSDirectPredicateModifier.

Кроме того, в массив operators могут быть включены объекты NSNumber, которые содержат одно из встроенных значений оператора предиката .

Итак: что вы пытаетесь достичь?

...