Day: September 14, 2014

Swift: NSDictionaryのソート

NSDictionaryのソートの仕方がわかりました。

問題の原因は、予想通り、NSDictionaryの書き方にありました。これで一歩前進です。ソートした結果(NSArray)を元のNSDictionaryに戻すには?

Objective-C

NSMutableArray  *wkArray;
NSSortDescriptor *tempSort = [NSSortDescriptor sortDescriptorWithKey:identifier ascending:YES];
wkArray = [[wkArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:tempSort]]copy];

Swift

var wkArray:[NSDictionary]
var descriptor:NSSortDescriptor = NSSortDescriptor(key: “idFirst”, ascending: true)
var result = (wkArray as NSArray).sortedArrayUsingDescriptors([descriptor])

問題点

var result: NSArray = [wkArray].sortedArrayUsingDescriptors([descriptor])

できあがり: NSArrayからNSDictionaryに戻すのにもう少し気の利いたやり方があるかもしれませんが、安直にfor文で回しました。

var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: “fBook”, ascending: true, selector: “caseInsensitiveCompare:”)
var sortedResult: NSArray = (wkArray as NSArray).sortedArrayUsingDescriptors([sortDescriptor])
wkArray     = [NSDictionary]()
for var inx = 0; inx < sortedResult.count; inx++ {
wkArray     += sortedResult[inx] as NSDictionary
}