gpt4 book ai didi

iphone - 使用NSPredicate将数组与另一个数组进行比较

转载 作者:行者123 更新时间:2023-12-01 17:27:18 25 4
gpt4 key购买 nike

我有以下结构:

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是否具有实现此功能的功能,还是应该采用其他过滤方法?

感谢你的帮助。

谢谢库玛

最佳答案

您可以执行以下操作:

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"filters CONTAINS[cd] %@ || filters CONTAINS[cd] %@", @"F1", @"F4"];

如果要添加数组中的所有键,可以执行以下操作:
NSArray * filterStrings = [[NSArray alloc] initWithObjects:@"F1",@"F4", nil];

NSString* predicateString = [filterStrings componentsJoinedByString:@"'|| filters CONTAINS[cd] '"];
predicateString = [NSString stringWithFormat:@"filters CONTAINS[cd] '%@'",predicateString];


NSPredicate * predicate = [NSPredicate predicateWithFormat:predicateString];
NSArray * filteredArray = [xnArray filteredArrayUsingPredicate:predicate];

关于iphone - 使用NSPredicate将数组与另一个数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com