我正在尝试在数组的对象中循环,并且想知道如何检查其中对象的内容,然后在我的搜索不适用时执行某些操作。
例如:
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
}
}
但我不确定我是否正确而且快速。
答案 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
}
}
开启这有助于你。