我的应用程序正在比较发送给函数的请求字符串,例如-(void)sendSearchRequest:(NSString *)request sport:(NSString *)sport location:(NSString *)location
。我将请求设置为“Kevin”,将运动设置为“Baseball ”,并将位置设置为“Wellston”。
然后,我将其与请求为“Kevin”,sp ort为“篮球” 且位置为“Wellston”的对象进行比较。这项运动应该返回假,但不是。这是怎么回事?
for (Athlete *athlete in self.athletes) {
NSComparisonResult result = [[athlete name] compare:request options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [request length])];
NSComparisonResult sportCompare = [[athlete sport] compare:sport options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [sport length])];
NSComparisonResult locationCompare = [location compare:self.cityName options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [self.cityName length])];
NSLog(@"Location: %@", location);
NSLog(@"Name: %@", request);
NSLog(@"Sport: %@", sport);
if (result == NSOrderedSame && sportCompare == NSOrderedSame && locationCompare == NSOrderedSame) {
[self.filteredArray addObject:athlete];
}
}
注意:
*我必须考虑用户错误。这些变量是通过UITextField传递的,因此,如果用户输入“Wellston,OK”,但对象所在的城市为“Wellston”,则它将无法正常工作
最佳答案
如果想知道两个字符串是否相同,为什么要使用NSComparisonResult?那根本没有道理。用于排序。只需使用isEqualToString:
-这就是它的用途。
或者,对于更复杂的相等性概念,可以实现锚定的子字符串搜索。您可以使该字母不区分大小写和变音符号。因此,例如,您可以确定一个字符串是否以另一字符串开头。