Ios 循环通过NSString逻辑的NSArray
我需要以下方面的帮助: 我有一个NSStrings的NSArray,我想循环遍历这些字符串并找到一个匹配的字符串,当找到匹配项时,此匹配项后的字符串将被提取到NSDictionary中,直到找到某个其他匹配项 以下是一个例子:Ios 循环通过NSString逻辑的NSArray,ios,objective-c,nsstring,nsarray,Ios,Objective C,Nsstring,Nsarray,我需要以下方面的帮助: 我有一个NSStrings的NSArray,我想循环遍历这些字符串并找到一个匹配的字符串,当找到匹配项时,此匹配项后的字符串将被提取到NSDictionary中,直到找到某个其他匹配项 以下是一个例子: NSArray *array = @[@"Fruit",@"Apple",@"Vegtable",@"Tomato",@"Fruit",@"Banana",@"Vegtable",@"Cucumber"]; 所以我想循环这个数组,将它分成两个数组,一个用于水果,一个用于
NSArray *array = @[@"Fruit",@"Apple",@"Vegtable",@"Tomato",@"Fruit",@"Banana",@"Vegtable",@"Cucumber"];
所以我想循环这个数组,将它分成两个数组,一个用于水果,一个用于蔬菜
有人能帮忙解释一下逻辑吗
如果我完全理解你的意思,谢谢你:
NSArray *array = @[@"Fruit",@"Apple",@"Vegtable",@"Tomato",@"Fruit",@"Banana",@"Vegtable",@"Cucumber"];
NSMutableArray *fruits = [NSMutableArray array];
NSMutableArray *vegtables = [NSMutableArray array];
for (NSInteger i = 0; i < array.count; ++i){
if ([array[i] isEqualToString:@"Fruit"]){
++i;
[fruits addObject:array[i]];
}
else if ([array[i] isEqualToString:@"Vegtable"]){
++i;
[vegtables addObject:array[i]];
}
}
NSArray*数组=@[@“水果”、“苹果”、“蔬菜”、“番茄”、“水果”、“香蕉”、“蔬菜”、“黄瓜”];
NSMutableArray*fruits=[NSMutableArray];
NSMutableArray*vegtables=[NSMutableArray];
对于(NSInteger i=0;i
这可能是解决问题的最简单方法:
NSArray *array = @[@"Chair",@"Fruit",@"Apple",@"Orange",@"Vegetable",@"Tomato",@"Fruit",@"Banana",@"Vegetable",@"Cucumber"];
NSMutableArray *fruitArray = [NSMutableArray array];
NSMutableArray *vegetableArray = [NSMutableArray array];
NSMutableArray *currentTarget = nil;
for (NSString *item in array)
{
if ([item isEqualToString: @"Fruit"])
{
currentTarget = fruitArray;
}
else if ([item isEqualToString: @"Vegetable"])
{
currentTarget = vegetableArray;
}
else
{
[currentTarget addObject: item];
}
}
在数组的一次迭代中,您只需根据最后出现的@“Fruit”
或@“vegeture”
字符串,使用指向两个结果数组之一的指针,不断向结果数组添加项即可
此算法将忽略第一次出现@“水果”
或@“蔬菜”
字符串之前的所有项目,因为当前目标
已初始化为nil
,这将忽略添加对象:
消息。如果需要不同的行为,只需更改初始化
您说过希望结果出现在NSDictionary中,但没有指定应该是什么键。如果您想要一个包含两个键(水果和蔬菜)的NSDictionary,以及包含项的NSArray值,只需使用先前创建的数组:
NSDictionary *dict = @{ @"Fruit": fruitArray, @"Vegetable": vegetableArray };
附言:你的例子中有一个拼写错误,是Vegtable而不是Vegetable。我在代码中更正了它,所以请记住。你知道西红柿是水果而不是蔬菜吗?