在Objective-C中循环通过NSArray和检查对象

时间:2013-06-25 04:13:12

标签: objective-c loops object nsarray

我正在尝试在数组的对象中循环,并且想知道如何检查其中对象的内容,然后在我的搜索不适用时执行某些操作。

例如:

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
    }
}

但我不确定我是否正确而且快速。

2 个答案:

答案 0 :(得分: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
    );
}

答案 1 :(得分: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
        }
    }

开启这有助于你。