Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不区分大小写比较字符串串_Ios_Objective C_Nsstring_Compare_Case Insensitive - Fatal编程技术网

Ios 不区分大小写比较字符串串

Ios 不区分大小写比较字符串串,ios,objective-c,nsstring,compare,case-insensitive,Ios,Objective C,Nsstring,Compare,Case Insensitive,将NSString与一组其他字符串进行比较的最佳方法是什么?不区分大小写?如果是其中一个字符串,则该方法应返回YES,否则返回NO。这里有一个小帮助函数: BOOL isContainedIn(NSArray* bunchOfStrings, NSString* stringToCheck) { for (NSString* string in bunchOfStrings) { if ([string caseInsensitiveCompare:stringToChe

将NSString与一组其他字符串进行比较的最佳方法是什么?不区分大小写?如果是其中一个字符串,则该方法应返回YES,否则返回NO。

这里有一个小帮助函数:

BOOL isContainedIn(NSArray* bunchOfStrings, NSString* stringToCheck)
{
    for (NSString* string in bunchOfStrings) {
        if ([string caseInsensitiveCompare:stringToCheck] == NSOrderedSame)
            return YES;
    }
    return NO;
}
当然,这可以针对不同的用例进行极大的优化

例如,如果对常量bunchOfStrings进行大量检查,则可以使用
NSSet
保存字符串的小写版本,并使用
containsObject:

BOOL isContainedIn(NSSet* bunchOfLowercaseStrings, NSString* stringToCheck)
{
    return [bunchOfLowercaseStrings containsObject:[stringToCheck lowercaseString]];
}

只是对尼古拉的回答补充几点:

nsorderedName
定义为0

typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
因此,如果在
nil
对象上调用
caseInsensitiveCompare:
,您将得到
nil
。然后将
nil
orsordersame
(0)进行比较,您将得到一个匹配项,这当然是错误的

此外,您还必须检查传递给
caseInsensitiveCompare:
的参数是否必须不为零。从:

此值不能为零。如果此值为nil,则行为为 未定义,可能会在未来版本的OS X中更改


非常感谢。我特别想找一些不区分案件的比较: