我的应用程序正在比较发送到函数的请求字符串,例如-(void)sendSearchRequest:(NSString *)request sport:(NSString *)sport location:(NSString *)location
。我将请求设置为'Kevin',将运动设置为'棒球',并将位置设置为'Wellston'。
然后,我将它与一个对象进行比较,该对象的请求是'Kevin',sp ort是'Basketball',位置是'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',它将不起作用
答案 0 :(得分:2)
如果您想知道两个字符串是否相同,为什么使用NSComparisonResult?这毫无意义。它用于排序。只需使用isEqualToString:
- 这就是它的用途。
或者对于更复杂的相等概念,您可以实现锚定子字符串搜索。你可以使用不区分大小写和变音符号不敏感。因此,您可以确定一个字符串是否以另一个字符串开头,例如。