2012-01-04 90 views
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]; 
} 

回答

0

當你寫的吧,這是要定義這樣的斷言:

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