0

私の配列uniqueは私のメイン配列と私の配列kindです。kind配列に の値が 1 つだけ存在することを確認する必要がありuniqueます。次に、配列の値が複数ある場合は、配列kindunique使用されている最初の値以外のすべての値を設定解除する必要があります。

これをさらに達成するには、次のコードを使用しますがindexpath、見つかったオブジェクトを保存して後で比較することはできません。xcode 言う"bad receiver type nsinteger"

誰かがこれを達成するのを手伝ってくれますか?

kind = @[@"#Routine",@"#Exercise",@"#Username"];
    NSMutableArray *uniqueKind = [NSMutableArray array];
    for (NSString* obj in kind) {
        if ( [unique containsObject:obj] ) {
            NSInteger i = [unique indexOfObject:obj];
            [uniqueKind addObject: [i intValue]];
        }
    }
4

3 に答える 3

4

AnNSIntegerは のようなものなintので、メッセージ ( ) を送信することはできません[i intValue]。また、または他のオブジェクト型NSIntegerにしない限り、配列に を追加することはできません。NSNumber次のように実行できます。

NSInteger i = [unique indexOfObject:obj];
[uniqueKind addObject: [NSNumber numberWithInteger:i]];

また、(何をしているのか理解していなくても)NSSet配列の代わりに を使用することもできます。また、いくつかの呼び出しを組み合わせることができます。

NSUInteger i = [unique indexOfObject:obj];
if ( i != NSNotFound ) {
    [uniqueKind addObject:[NSNumber numberWithInteger:i]];
}
于 2013-08-05T19:33:49.093 に答える
2

問題が解決するかどうかはわかりませんが、配列の代わりにセット (または変更可能なバリエーション) を使用することを検討しましたか? それらは一意性を保証し、交差/包含をチェックできるようにします。NSSet クラス リファレンスを参照してください。

于 2013-08-05T19:42:23.307 に答える
0

実際の intValue ではなく、NSMutableArray にオブジェクトを追加する必要があります。最初に整数を NSNumber に変換してみてください。

[uniqueKind addObject: [NSNumber numberWithInt:i]];

代わりは。

(編集済み)

于 2013-08-05T19:33:02.593 に答える