我有以下結構:比較與其他使用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