Iphone 这个巨大的如果声明感觉不可靠。。。在目标C中,您将如何做到这一点

Iphone 这个巨大的如果声明感觉不可靠。。。在目标C中,您将如何做到这一点,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,一个前缀数组、一个后缀数组和两个for循环就可以了。构建一个前缀/后缀的常量表和一个指示它是哪一个的标志,然后在表上迭代检查它是否有前缀或后缀。我将创建一个前缀集和后缀集,然后在这些集合上使用containsObject,并从相关字符串中提取第一个字符(也是查看前缀集合后的前两个字符)和最后两个字符,以对照集合进行检查。查找将非常快。如果您不需要为iOS 3编写代码,我想NSRegularExpression会很神奇。您实际上需要同时检查第一个字符和前两个字符,因为原始If语句中的前缀可以是一个

一个前缀数组、一个后缀数组和两个
for
循环就可以了。

构建一个前缀/后缀的常量表和一个指示它是哪一个的标志,然后在表上迭代检查它是否有前缀或后缀。

我将创建一个前缀集和后缀集,然后在这些集合上使用containsObject,并从相关字符串中提取第一个字符(也是查看前缀集合后的前两个字符)和最后两个字符,以对照集合进行检查。查找将非常快。

如果您不需要为iOS 3编写代码,我想
NSRegularExpression
会很神奇。您实际上需要同时检查第一个字符和前两个字符,因为原始If语句中的前缀可以是一个或两个字符。非常好的一点,我忽略了后缀可以是+或-。已注释。无需为此创建
NSArray
。C样式的数组应该足够了。使用NSArray更容易使用,也不容易出错。这种情况下的开销非常小。如果在未来,它变成了一个瓶颈,它可以改变。先编码,后优化。
for (NSString *metarComponent in self.readingComponents) {
    if ( [metarComponent hasPrefix:@"+"]
         || [metarComponent hasPrefix:@"-"]
         || [metarComponent hasPrefix:@"VC"]
         || [metarComponent hasPrefix:@"MI"]
         || [metarComponent hasPrefix:@"PR"])
         || [metarComponent hasPrefix:@"BC"])
         || [metarComponent hasPrefix:@"DR"])
         || [metarComponent hasPrefix:@"BL"])
         || [metarComponent hasPrefix:@"SH"])
         || [metarComponent hasPrefix:@"TS"])
         || [metarComponent hasPrefix:@"PZ"])
         || [metarComponent hasSuffix:@"DZ"])
         || [metarComponent hasSuffix:@"RA"])
         || [metarComponent hasSuffix:@"SN"])
         || [metarComponent hasSuffix:@"SG"])
         || [metarComponent hasSuffix:@"IC"])
         || [metarComponent hasSuffix:@"PL"])
         || [metarComponent hasSuffix:@"GR"])
         || [metarComponent hasSuffix:@"GS"])
         || [metarComponent hasSuffix:@"UP"])
         || [metarComponent hasSuffix:@"BR"])
         || [metarComponent hasSuffix:@"FG"])
         || [metarComponent hasSuffix:@"FU"])
         || [metarComponent hasSuffix:@"VA"])
         || [metarComponent hasSuffix:@"DU"])
         || [metarComponent hasSuffix:@"SA"])
         || [metarComponent hasSuffix:@"HZ"])
         || [metarComponent hasSuffix:@"PY"])
         || [metarComponent hasSuffix:@"PO"])
         || [metarComponent hasSuffix:@"SQ"])
         || [metarComponent hasSuffix:@"FC"])
         || [metarComponent hasSuffix:@"SS"])
         || [metarComponent hasSuffix:@"DS"]) {     
            [rawWeatherStrings addObject:metarComponent];
        }
}
NSArray *prefixes = [NSArray arrayWithObjects: @"+", @"-", ..., @"PZ", nil];

NSArray *suffixes = [NSArray arrayWithObjects: @"DZ", @"RA", ..., @"DS", nil];

for (NSString *metarComponent in self.readingComponents) {
    for (NSString *prefix in prefixes)
        if ( [metarComponent hasPrefix:prefix])
             [rawWeatherStrings addObject:metarComponent];
    for (NSString *suffix in suffixes)
        if ( [metarComponent hasSuffix:suffix])
             [rawWeatherStrings addObject:metarComponent];
}