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