0

配列でアイテムが繰り返される回数を確認する方法。繰り返し項目を含む配列があります。以下は配列です。

"Family:0",
"Family:0",
"Family:0",
"Gold:3",
"Gold:3"

だから、私はそれぞれのアイテムの応答値3と2が欲しいです。どうすればそれを達成できますか。私の主張を明確にしたことを願っています。不明な点があればお尋ねください。

以下は私が試した私のコードです。

int occurrences = 0;
int i=0;
for(NSString *string in arrTotRows){
    occurrences += ([string isEqualToString:[arrTotRows objectAtIndex:indexPath.section]]); //certain object is @"Apple"
    i++;
}
4

4 に答える 4

7
NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:yourArray];

出現回数を取得するには:

int objectCount = [countedSet countForObject:yourQuery];

(yourQuery多重度を取得したいオブジェクトはどこにありますか)。あなたの場合、例えば:

int objectCount = [countedSet countForObject:@"Family:0"];

objectCount"Family:0" はマルチセットで 3 回あるため、3 に等しい必要があります。

于 2013-06-04T13:33:46.200 に答える
2

これにはNSCountedSetを使用できます。すべてのオブジェクトをカウント セットに追加し、countForObject:メソッドを使用して各オブジェクトの出現頻度を調べます。

NSArray *names = [NSArray arrayWithObjects:@"Family:0", @"Family:0", @"Gold:3", @"Gold:3", nil];
    NSCountedSet *set = [[NSCountedSet alloc] initWithArray:names];

    for (id item in set)
    {
        NSLog(@"Name=%@, Count=%lu", item, (unsigned long)[set countForObject:item]);
    }

出力

Name=Gold:3, Count=2

Name=Family:0, Count=2
于 2013-06-04T13:33:18.110 に答える
0

NSCountedSetまさにこの問題を解決します。を使用してすべての文字列を追加し、セットを列挙するときaddObject:に最終的なカウントを取得します。countForObject:

于 2013-06-04T13:33:12.150 に答える
0

これを試してください....

int count = 0;

for (int i = 0; i < array.count; ++i) {
    NSString *string = [array objectAtIndex:i];
    for (int j = i+1; j < array.count; ++j) {
        if ([string isEqualToString:[array objectAtIndex:j]]) {
         count++;
        }
    }
于 2013-06-04T13:55:45.653 に答える