Ответ 1
Вы должны передать массив дескрипторов сортировки (даже если он только один):
var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor])
Я извлек некоторые данные JSON из API и теперь имею NSArray, полный объектов NSDictionary. Каждый NSDictionary имеет пару "ключ/значение" "имя", и я хочу сортировать NSArray по этой паре ключ/значение.
Я немного поработал, но ни одно из решений, с которыми я столкнулся, похоже, работает на новом языке Swift, и я не уверен, возможно ли это ошибка или нет...
Я пробовал:
var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors(NSSortDescriptor(key: "name", ascending: true))
Но это не скомпилируется, поскольку "NSSortDescriptor не конвертируется в [AnyObject]".
Любые советы?
Вы должны передать массив дескрипторов сортировки (даже если он только один):
var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor])
Вместо того, чтобы делать это по-старому, почему бы не принять новое? Тип Swift Array имеет методы sort
и sorted
. Вы можете поставить замыкание как функцию сортировки:
var sortedResults= results.sorted {
(dictOne, dictTwo) -> Bool in
// put your comparison logic here
return dictOne["name"]! > dictTwo["name"]!
}
var arrDescriptor = NSSortDescriptor(key: "", ascending: true)
var sortDescriptors: NSArray = [arrDescriptor]
_sortedArray = allKeysArray.sortedArrayUsingDescriptors(sortDescriptors as [AnyObject])
print(_sortedArray)