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];
}