【发布时间】:2015-02-05 12:41:17
【问题描述】:
我可以想出各种方法来实现这一点,但我正在寻找在 Ojective-C 中最优雅、最惯用的方法:
我有一组来自[NSLocale ISOCurrencyCodes]; 的按字母排序的货币代码。现在我想生成一个新数组,数组开头有五种最常用的货币,其余货币仍按字母顺序排列。
所以任务是:将数组的一些元素移动到新数组的开头,其余元素按原顺序移动,但不将元素移到最前面且没有任何间隙。
我目前的解决方案是:
NSMutableArray *mutableCurrencyList;
mutableCurrencyList = [[NSLocale ISOCurrencyCodes] mutableCopy];
[mutableCurrencyList removeObject:@"USD"];
[mutableCurrencyList removeObject:@"EUR"];
[mutableCurrencyList removeObject:@"JPY"];
[mutableCurrencyList removeObject:@"GBP"];
[mutableCurrencyList removeObject:@"CAD"];
[mutableCurrencyList insertObject:@"USD" atIndex:0];
[mutableCurrencyList insertObject:@"EUR" atIndex:1];
[mutableCurrencyList insertObject:@"JPY" atIndex:2];
[mutableCurrencyList insertObject:@"GBP" atIndex:3];
[mutableCurrencyList insertObject:@"CAD" atIndex:4];
【问题讨论】:
-
也许我错过了你问题的主旨,但我会按标准 #1(最常用)排序,删除前 5 个元素,然后按标准 #2(alpha)对其余元素进行排序,然后简单地将两者“缝合”在一起。因此,它分解为: 1. 排序 2. 取 3. 排序 4. 缝合。你是要这样的算法,还是要实际的 Obj-C 代码来获得这个?
-
@mbm29414 不,这真的是一个微不足道的问题。我刚刚意识到,我经常做的事情比必要的复杂,因为我不熟悉一种语言的常用习语。 Especially with collection classes.
-
我认为您使事情变得更复杂,因为您使用诸如“惯用”之类的词,而不是简单地考虑人们用来做某事的顺序。
标签: objective-c arrays idioms