2011-09-01 26 views

回答

135
if ([mystring isEqualToString:@"Johns"]){ 
    //do some stuff in here 
} 
3

这里行的想法是另一种方法,你可能要在某些情况下使用:

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

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

或者,如果你有大量的名字在阵列中,您可以使用NSSet,因为查找对象比在阵列中快((O(Log N) vs O(N)

NSSet * validNamesSet = [NSSet setWithArray:validNames]; 

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

这些方法的工作,因为NSSetNSArray使用isEqual:它将调用isEqualToString:NSString实例。

+0

你想使用'location'方法而不是''isEqualToString'方法的for循环吗? – Pavan

+1

@Pavan比for循环更容易使用'indexOfObject'(更少的代码行)。除此之外,没有什么区别。 NSSet方法可以比通过大型数组循环更快,但在大多数情况下,它不会很重要。 – Robert

相关问题