2011-09-01 11 views

risposta

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

Ecco un altro metodo si potrebbe desiderare di utilizzare in alcune circostanze:

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

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

Oppure, se si dispone di una grande quantità di nomi nell'array è possibile utilizzare uno NSSet, poiché la ricerca di un oggetto è più veloce rispetto a un array ((O(Log N) rispetto a O(N))

NSSet * validNamesSet = [NSSet setWithArray:validNames]; 

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

Questi metodi funzionano perché NSSet e NSArray uso isEqual: che chiamerà isEqualToString: per NSString istanze.

+0

Quando si desidera utilizzare l'approccio 'location' in opposizione a un ciclo for con il metodo' isEqualToString'? – Pavan

+1

@Pavan È un po 'più facile usare 'indexOfObject' di un ciclo for (meno righe di codice). A parte questo c'è poca differenza. Il metodo NSSet può essere più veloce del looping attraverso un array per insiemi di grandi dimensioni, ma nella maggior parte dei casi non sarà significativo. – Robert

Problemi correlati