NSPredicateEditorRowTemplate
左側にエンティティFooからのプロパティ名がいくつかあり、その中にプロパティbarがあるものを生成しようとしています。ユーザーが「bar」を選択すると、右側が「bar」のすべての値を含むポップアップになるはずです。
右側のポップアップに最適に入力するにはどうすればよいですか? barのすべての一意の値はに格納されるNSMutableArray
ため、おそらく KVO を使用して、配列が変更されたときに行テンプレートを変更できます。
コードを使用して右側のポップアップの値をNSPredicateEditor
連続して簡単に変更する方法はありますか? IB にいくつかの静的な値を入力することはできますが、この状況ではそれができません。
編集
Xcode 4の NSPredicateEditor や @Dave DeLong による優れた回答など、関連する Q&A をかなり読んだので、かなりの作業を次のように行うことができると思います。
NSArray *leftexp = @[[NSExpression expressionForKeyPath:@"name"],[NSExpression expressionForKeyPath:@"married"]];
NSArray *rightexp = @[[NSExpression expressionWithFormat:@"One"],[NSExpression expressionWithFormat:@"Two"]];
NSPredicateEditorRowTemplate *template = [[NSPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftexp rightExpressions:rightexp modifier:NSDirectPredicateModifier operators:@[@(NSEqualToPredicateOperatorType)] options:0];
NSPredicateEditorRowTemplate *compound = [[NSPredicateEditorRowTemplate alloc] initWithCompoundTypes:@[@(NSOrPredicateType)]];
[self.predicateEditor setRowTemplates:@[template,compound]];
NSEntityDescription *description = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
self.predicate = [NSPredicate predicateWithFormat:@"name == ''"];
基本的な NSPredicateEditor を表示する方法をいくつか見てきました (少なくとも複合行を使用) 。それを見つけることができませんが、誰かがこれと一緒に私を助けることができますか?