2011-09-01 11 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)O(N)

NSSet * validNamesSet = [NSSet setWithArray:validNames]; 

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

NSSetNSArrayNSStringインスタンスにisEqualToString:を呼ぶであろうisEqual:を使用しているため、これらのメソッドは動作します。

+0

いつ 'isEqualToString'メソッドを使ってforループとは対照的に' location'アプローチを使いたいですか? – Pavan

+1

@Pavan forループ(コード行数が少ない)よりも 'indexOfObject'を使う方が少し簡単です。それ以外はほとんど違いがありません。 NSSetメソッドは、大きなセットの配列をループするよりも高速ですが、ほとんどの場合、それは重要ではありません。 – Robert

関連する問題