2014-11-26 3 views

ответ

2

Словари - это не упорядоченная структура данных. Массивы. Таким образом, взятие ключей из неупорядоченной структуры данных приведет к неупорядоченному результату. Вам нужно будет создать свой собственный OrderedDictionary, который не так уж сложно сделать.

Вот проект с примером упорядоченного словаря: https://github.com/lithium3141/SwiftDataStructures

Вот статья объясняет все дело, если вы заботитесь о деталях: http://timekl.com/blog/2014/06/02/learning-swift-ordered-dictionaries/

1

Это, как сортировать массив ключей:

let sortedKeys = sorted(pickerData.keys.array, { 
    (s1: String, s2: String) -> Bool in 
    return s1 < s2 
}) 

Просто замените оператор return, чтобы изменить логику сортировки так, чтобы она соответствовала вашим требованиям.

+0

Это не работа. Мне нужен только естественный вид, как я пишу выше. порядок по определенному словарю – TomSawyer

+0

Словарь не гарантирует никакого заказа. Вы должны рассмотреть возможность использования массивов или, возможно, создать свой собственный класс, чтобы сохранить ссылку на порядок сортировки. Что вы имеете в виду, если не работаете, можете ли вы объяснить? Я пробую это на детской площадке, и это работает. – Greg

+0

Я тоже пробовал на детской площадке, но сортировал ее по алфавиту. Ты не понимаешь мой вопрос? Я хочу, чтобы он сортировал по определенному словарю с естественным порядком, таким как: «en», «jp», «fr», «zh-CN» 'не алфавит:' 'en", "fr", "jp", "zh -CN ", я только что отредактировал свой вопрос, потому что вы не понимаете, что мне нужно сортировать по алфавиту. – TomSawyer

1

Чтобы получить отсортированный версию массива ключей, принимая во внимание, что это непреложный массив, вы должны:

  • копию изменяемого переменной
  • рода на месте, используя sort метод

Это код:

var array = pickerData.keys.array as [String] 
array.sort(<) 

Сейчас array сортируется в алфавитном порядке. Причина, по которой нужна копия массива ключей, заключается в том, что sort работает на месте, что, очевидно, невозможно для неизменяемого массива.

Смежные вопросы