Iphone 如何检查NSString是否为特定的字符串值?

Iphone 如何检查NSString是否为特定的字符串值?,iphone,ios,nsstring,Iphone,Ios,Nsstring,您好,我很抱歉,如果您可以检查NSString是否等于一个特定值,例如一个人的名字 我的思路是 if (mystring == @"Johns"){ //do some stuff in here } 以下是您在某些情况下可能希望使用的另一种方法: NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ]; if ([validNames indexOfObject:myString].location != NSNotFound)

您好,我很抱歉,如果您可以检查NSString是否等于一个特定值,例如一个人的名字

我的思路是

if (mystring == @"Johns"){
    //do some stuff in here
}

以下是您在某些情况下可能希望使用的另一种方法:

NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ];

if ([validNames indexOfObject:myString].location != NSNotFound) 
{
    // The myString is one of the names in the valid names array
}
或者,如果数组中有大量名称,则可以使用,因为查找对象的速度比在数组中快(
(O(logn)
vs
O(N)


这些方法之所以有效,是因为
NSSet
NSArray
使用了将调用
NSString
实例的方法。

什么时候要使用
location
方法,而不是使用
isEqualToString
方法的for循环?@Pavan使用
indexOfObject
比for循环更容易一些(代码行数较少)。除此之外,差别不大。对于大型集合,NSSet方法可能比在数组中循环更快,但在大多数情况下,它并不重要。
NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ];

if ([validNames indexOfObject:myString].location != NSNotFound) 
{
    // The myString is one of the names in the valid names array
}
NSSet * validNamesSet = [NSSet setWithArray:validNames];

if ([validNamesSet containsObject:myString]) 
{
    // This is faster than indexOfObject for large sets
}