iOS:NSString评估字符串表达式

时间:2016-01-19 09:37:19

标签: ios objective-c iphone nsstring

我有大型XML文件(近1,27,000)个银行记录。

在一种情况下,我们需要检查银行名称。例如

if(
        [title isEqualToString:@"ABHYUDAYA COOPERATIVE BANK LIMITED" ] ||
                   [title isEqualToString:@"ABU DHABI COMMERCIAL BANK" ] ||
                   [title isEqualToString:@"AHMEDABAD MERCANTILE COOPERATIVE BANK" ] ){
////Perform certain action
}

目前我们有XML结构,我们正在将这些巨大的数据解析为NSString。所以我在NSString对象中得到了上面的示例数据。

如何评估上述示例的NSString?在堆栈溢出时发现了许多使用 NSPredicate NSExpression 的示例。但是通过我对这些问题的理解,他们将处理数学表达,例如4/3 * 2等。我无法使用这些示例处理上述格式。

有没有办法在NSString和条件?

中评估上述格式

PS - 能够通过将数据转换为数据库但寻找String格式的NSString评估来解决上述问题。

2 个答案:

答案 0 :(得分:1)

如果只是为了让你的表达更好而不改变底层逻辑,你可以这样做:

NSArray <NSString *> *bankNames = @[@"ABHYUDAYA COOPERATIVE BANK LIMITED" 
                                    @"ABU DHABI COMMERCIAL BANK",
                                    @"AHMEDABAD MERCANTILE COOPERATIVE BANK"];
if ([bankNames contains:title]) {
    //Perform certain action
}

如果你坚持使用谓词,那么你应该这样做:

NSArray <NSString *> *bankNames = @[@"ABHYUDAYA COOPERATIVE BANK LIMITED" 
                                    @"ABU DHABI COMMERCIAL BANK",
                                    @"AHMEDABAD MERCANTILE COOPERATIVE BANK"];
NSPredicate *containsPredicate = [NSPredicate predicate:@"%K equals %@", @"SELF", title];
BOOl matchesName = [bankNames filteredArrayUsingPredicate:predicate].count > 0;

尽管如此,我并不理解你为什么要那样做。

答案 1 :(得分:0)

让您拥有名为NSArray的{​​{1}}中的数据,您希望根据条件进行过滤。

response

上面的代码片段假定对象的键,我们需要在数组中搜索&#34; bank&#34;