0

配列のオブジェクト内でループしようとしていますが、配列内のオブジェクトの内容を確認し、検索が適用されないときに何かを行う方法を知りたいです。

例えば:

myArray = @[@"A1", @"A2", @"A3", @"B1", @"B2", @"B3", @"C1", @"C2", @"C3"];

myArray の内容を確認したいのですが、オブジェクトに文字 A が含まれている場合は、文字 A のオブジェクトを含むボタンの行を作成するまで、実際にボタンを作成します。別の文字が含まれている場合、たとえば B文字 A 行のボタンの下に、別のボタン行を作成します。

次のようになります。

[A1] [A2] [A3]
[B1] [B2] [B3]
[C1] [C2] [C3]

私はこのような高速な列挙を行うことを考えています:

for (NSString *string in myArray) 
{
    if (// string has letter A)
    {
        Add string to array of A
    }
    else if (// string has letter B)
    {
        Add string to array of B
    }
    else if (// string has letter C)
    {
        Add string to array of C
    }
}

しかし、それを正しく迅速に行っているかどうかはわかりません。

4

2 に答える 2

0

NSRange を使用して文字列内の文字を検索し、作業を行います。このように試してください:

 for (NSString *string in myArray) 
    {
        if ([string rangeOfString:@"A"].location != NSNotFound)//Contains "A"
        {
            Add string to array of A
        }
        else if ([string rangeOfString:@"B"].location != NSNotFound)//Contains "B"
        {
            Add string to array of B
        }
        else if ([string rangeOfString:@"C"].location != NSNotFound)//Contains "C"
        {
            Add string to array of C
        }
    }

これはあなたを助けます。

于 2013-06-25T04:28:25.377 に答える
0

この種のアプローチは、間接的に役立つ可能性があります。何を聞かれているのかよくわからないので、これを自分の好きなようにしてください。

接頭辞でまとめたい場合はNSMutableDictionary、キーが@"A", @"B", ...で値が のインスタンスである を作成しますNSMutableArray。の各文字列について、myArrayプレフィックスをキーとして取得し、辞書で配列値を検索して追加します。

次の行に沿ったもの:

NSArray *myArray = @[@"A1", @"A2", @"A3", @"B1", @"B2", @"B3", @"C1", @"C2", @"C3"];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSString *s in myArray) {
    if ([s length] < 1) {
        continue;
    }
    NSString *key = [s substringToIndex:1];
    if (![dict objectForKey:key]) {
        [dict setObject:[NSMutableArray array] forKey:key];
    }
    NSMutableArray *bucket = [dict objectForKey:key];
    [bucket addObject:s];
}

この種のアプローチは、あなたの質問に直接答えないかもしれませんが、有益であることがわかります. また、拡張可能であるという利点もあります。さらに別のif句は必要ありません。

編集:コンソールの上記の「po dict」の出力は次のとおりです

(lldb) po dict
$2 = 0x0a33e660 {
    A =     (
        A1,
        A2,
        A3
    );
    B =     (
        B1,
        B2,
        B3
    );
    C =     (
        C1,
        C2,
        C3
    );
}
于 2013-06-25T04:20:47.057 に答える