這可能是解決問題的最簡單的方法:
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"
或@"Vegetable"
字符串,使用指向兩個結果數組之一的指針將項添加到結果數組中。
該算法忽略@"Fruit"
或@"Vegetable"
串的第一次出現之前的所有項目,因爲currentTarget
被初始化爲nil
,其忽略了addObject:
消息。如果你想要不同的行爲,只需更改初始化。
你說你想在一個NSDictionary的結果,但沒有指定什麼應該是關鍵。如果你想要一個NSDictionary中有兩個按鍵,水果和蔬菜,以及含有項值NSArrays,只需使用以前創建的數組:
NSDictionary *dict = @{ @"Fruit": fruitArray, @"Vegetable": vegetableArray };
PS:你有一個錯字在你的榜樣,Vegtable代替蔬菜。我在我的代碼中更正了它,所以請記住它。
來源
2014-11-02 13:25:13
Ips
你知道西紅柿是水果而不是蔬菜嗎? – Abizern 2014-11-02 11:26:14