0
我能想出各種各樣的方式來實現這一點,但我正在尋找最優雅的,習慣的方法在Ojective-C要做到這一點:在Objective-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 2015-02-05 13:03:53
@ mbm29414不,這確實是一個微不足道的問題。我剛剛意識到,我經常做的事情比必要的更復雜,因爲我不熟悉一種語言的常見成語。 [尤其是集合類](http://stackoverflow.com/questions/27986199/idiomatic-way-to-detect-sequences-of-x-times-same-object-in-an-array-in-smalltal)。 – MartinW 2015-02-05 13:09:57
我想你會讓事情變得更加複雜,因爲你使用的是像「慣用」這樣的詞,而不是簡單地考慮用來做某事的順序。 – 2015-02-05 13:32:38