Ios 循环通过NSString逻辑的NSArray

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"]; 所以我想循环这个数组,将它分成两个数组,一个用于水果,一个用于

我需要以下方面的帮助:

我有一个NSStrings的NSArray,我想循环遍历这些字符串并找到一个匹配的字符串,当找到匹配项时,此匹配项后的字符串将被提取到NSDictionary中,直到找到某个其他匹配项

以下是一个例子:

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。我在代码中更正了它,所以请记住。

你知道西红柿是水果而不是蔬菜吗?