2012-01-18 8 views
0

NSMutableArrayにオブジェクトが複数含まれているかどうかをチェックする必要があります(たとえば、配列には1,2,3,1,4が含まれています)、配列に1が何回存在するかを知りたいと思います。私はcontainsObject:を認識していますが、この種のチェックにどのように使用するのですか?NSMutableArrayにはオブジェクトが含まれています

答えて

1
+0

Hey ElanthiraiyanS:本当に新しい、面白いことをありがとうあなたのサポートのおかげで、私は私の問題を解決しました。私はこれが好きでした:NSCountedSet * mySet = [[NSCountedSet alloc] initWithArray:checkedBusinessIdArray]; int valueCount = [mySet countForObject:m_CheckinedBusinessID]; NSLog(@ "このオブジェクトのカウントは%d"、valueCountです。 if(valueCount> = 2) { businessCheckinCount = NO; } – user1115985

+0

よろしくお願いいたします。それが助けてくれてうれしい。 – sElanthiraiyan

0

簡単な方法はNSSetに変換してから配列に戻すことです。 NSSetsには重複を含めることはできません。または、ループを使用して値を1つずつ新しい配列にコピーし、追加する前に新しい配列にオブジェクトのコピーが含まれていないことを確認します。

+0

しかし、重複した値の数を知る必要があります。重複した値が配列内で何度起こっているのかを教えてください。 – user1115985

0

それはあなたのオブジェクトの種類に依存しますが、彼らはNSDictionaryのためのキーとして使用することができれば、私は、各オブジェクトのインスタンスの数を含むのNSNumberオブジェクトを指すNSMutableDictionaryを作成します。ような何か:このコードの終わりに

NSArray *array = whatever; 
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:array.count]; 
for (id obj in array) 
{ 
    NSNumber *number = [d objectForKey:obj]; 
    if (number == nil) 
    { 
    [d setObject:[NSNumber numberWithInt:1] forKey:obj]; 
    } 
    else 
    { 
    [d setObject:[NSNumber numberWithInt:([number intValue]+1) forKey:obj]; 
    } 
} 

は、あなたはキーが元のオブジェクトであり、値はキーが元に存在した回数が含まれているNSNumbersあるNSDictionaryので残されています。

関連する問題