我的应用程序正在比较发送给函数的请求字符串,例如-(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:-这就是它的用途。

或者,对于更复杂的相等性概念,可以实现锚定的子字符串搜索。您可以使该字母不区分大小写和变音符号。因此,例如,您可以确定一个字符串是否以另一字符串开头。

07-28 06:27