我有以下结构:比较与其他使用NSPredicate
TxnSummary * t1 = [[TxnSummary alloc] init];
t1.txnId = @"1";
t1.shortDesc = @"First one";
t1.filters = [[NSArray alloc] initWithObjects:@"F1", @"F2", nil];
TxnSummary * t2 = [[TxnSummary alloc] init];
t2.txnId = @"2";
t2.shortDesc = @"Second one";
t2.filters = [[NSArray alloc] initWithObjects:@"F1",@"F2", @"F3", nil];
TxnSummary * t3 = [[TxnSummary alloc] init];
t3.txnId = @"3";
t3.shortDesc = @"Third one";
t3.filters = [[NSArray alloc] initWithObjects:@"F1", @"F3", nil];
TxnSummary * t4 = [[TxnSummary alloc] init];
t4.txnId = @"4";
t4.shortDesc = @"Fourth one";
t4.filters = [[NSArray alloc] initWithObjects:@"F4", nil];
NSArray * xnArray = [[NSArray alloc] initWithObjects:t1,t2,t3,t4, nil];
现在,如果我想找出其中TXN汇总具有过滤器F1的话,我可以这样做:
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"filters CONTAINS[cd] %@", @"F1"];
NSArray * filteredArray = [xnArray filteredArrayUsingPredicate:predicate];
这很好,如果我只比较一个字符串,但如果想要找出哪些所有txn摘要都有过滤器“F1”或“F2”,那么如果我必须遵循上面的机制,我会有创建两个谓词 - 每个用于F1和F2,然后针对xnArray运行它(这看起来效率很低)。我希望能够创建一个过滤器字符串列表,并使用它从xn数组中获取匹配的txs。
NSArray * filterStrings = [[NSArray alloc] initWithObjects:@"F1",@"F2", nil];
NSPredicate是否具有实现这一功能的功能,还是应该使用其他方法进行过滤?
感谢您的帮助。
感谢,库马尔
完美。感谢您的输入。 – KumarM 2012-03-27 13:21:56