Подтвердить что ты не робот

Сортировка NSArray объектов NSDictionary в Swift

Я извлек некоторые данные 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]".

Любые советы?

4b9b3361

Ответ 1

Вы должны передать массив дескрипторов сортировки (даже если он только один):

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor])

Ответ 2

Вместо того, чтобы делать это по-старому, почему бы не принять новое? Тип Swift Array имеет методы sort и sorted. Вы можете поставить замыкание как функцию сортировки:

var sortedResults= results.sorted {
  (dictOne, dictTwo) -> Bool in 
  // put your comparison logic here
  return dictOne["name"]! > dictTwo["name"]!
}

Ответ 3

var arrDescriptor = NSSortDescriptor(key: "", ascending: true)
   var sortDescriptors: NSArray = [arrDescriptor]
   _sortedArray = allKeysArray.sortedArrayUsingDescriptors(sortDescriptors as [AnyObject])

   print(_sortedArray)