2011-09-01 53 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

相關問題