Ios NSArray containsObject中的大小写不敏感:

Ios NSArray containsObject中的大小写不敏感:,ios,objective-c,cocoa,case-sensitive,Ios,Objective C,Cocoa,Case Sensitive,我正在开发一个应用程序,它检查数组是否包含某个字符串。然而,它似乎工作不正常,因为我认为它可能正在研究字符串的情况。 在这行代码中,我如何确保containsObject:不区分大小写 if ([myArray containsObject:term]) {...} 请询问您是否需要澄清,并感谢您的帮助 (同时,我发现了这个问题:。我不知道这是否是我需要的,如果是,我将如何使用它)NSArray是(故意)不知道它包含什么。因此,它不知道NSString,更不用说区分大小写了。您必须循环遍历数组

我正在开发一个应用程序,它检查数组是否包含某个字符串。然而,它似乎工作不正常,因为我认为它可能正在研究字符串的情况。 在这行代码中,我如何确保containsObject:不区分大小写

if ([myArray containsObject:term]) {...}
请询问您是否需要澄清,并感谢您的帮助

(同时,我发现了这个问题:。我不知道这是否是我需要的,如果是,我将如何使用它)

NSArray
是(故意)不知道它包含什么。因此,它不知道
NSString
,更不用说区分大小写了。您必须循环遍历数组中的项并进行比较。可以使用多种不同的方法之一在阵列中循环:

  • objectEnumerator
  • indexOfObjectPassingTest:
    它使用块来执行操作
  • 为每个项目调用
    objectAtIndex:
我会建议前两个选项中的一个

是一种方便的方法,您无法应用于您的目的。以下是文档讨论:

此方法通过以下方式确定数组中是否存在对象: 向数组的每个对象发送isEqual:消息(和 将一个对象作为参数传递给每个isEqual:message)

常规NSObject方法
isEqual:
方法不能考虑字符串的大小写。如果你能使用blocks(iOS4),最好的解决方案可能是凯文·巴拉德的建议。如果没有,那么您可能必须遍历字符串

if ([@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
    //...
}

这个可能对你有用。。。最好的

这里有一种使用键值编码的有效方法

NSArray *strings; // array of strings
if ([[strings valueForKey:@"lowercaseString"] containsObject:[searchString lowercaseString]]) {
   NSLog(@"searchString found");
} else {
   NSLog(@"searchString NOT found");
}
Swift 3选项:

let things = ["foo", "Bar"]
let searchString = "FOO"

if things.contains(where: { $0.lowercased() == searchString.lowercased() }) {
    print("found searchString")
} else {
    print("searchString not found")
}

等我有机会的时候我会调查的。谢谢关于这个解决方案的问题。caseInsensitiveCompare:如果NSArray中的一个项目是NSNumber而不是NSString,那么该如何处理?我会撞车吗?
NSArray *strings; // array of strings
if ([[strings valueForKey:@"lowercaseString"] containsObject:[searchString lowercaseString]]) {
   NSLog(@"searchString found");
} else {
   NSLog(@"searchString NOT found");
}
let things = ["foo", "Bar"]
let searchString = "FOO"

if things.contains(where: { $0.lowercased() == searchString.lowercased() }) {
    print("found searchString")
} else {
    print("searchString not found")
}