2016-02-20 4 views
1

Для того, чтобы программно создавать таблицы, у меня есть настройка меню, как показано ниже, она содержит разделы, а также ячейки.Swift - многомерная сортировка массива

var menu = [ 
    "section 1": [ 
     "point a", 
     "point b", 
     "point c" 
    ], 
    "section 2": [ 
     "point a", 
     "point b", 
     "point c", 
     "point d", 
     "point e" 
    ], 
    "section 3": [ 
     "point a" 
    ] 
] 

struct Sections { 
    var sectionName : String! 
    var sectionObjects : [String]! 
} 

var sections = [Sections]() 

for (key, value) in menu { 
    print("\(key) -> \(value)") 
    sections.append(Sections(sectionName: key, sectionObjects: value)) 
} 

Поэтому я хочу, чтобы он был точно вставлен в этом порядке (раздел 1 -> раздел 2 -> раздел 3).

Но это на самом деле вставлен в другом порядке (с печатью):

section 2 -> ["point a", "point b", "point c", "point d", "point e"] 
section 1 -> ["point a", "point b", "point c"] 
section 3 -> ["point a"] 

Я абсолютно не знаю, почему порядок изменяется в массиве меню. Любой может себе представить, почему или есть какие-то предложения?

Спасибо и приветствую!

ответ

2

Словари в Swift не имеют к ним заказа. Поэтому, когда вы повторяете один, вы не обязательно столкнетесь с ними в том же порядке, в котором они были добавлены.

Заканчивать этот ответ для более подробно: https://stackoverflow.com/a/24111700/3517395

1

Это потому, что Dictionary не имеет никакого порядка. Вы должны сами сортировать ключи перед их итерацией:

for key in menu.keys.sort() { 
    let value = menu[key]! 
    sections.append(Sections(sectionName: key, sectionObjects: value)) 
} 
+0

спасибо за ответ, но как это помогает? порядок остается таким же. –

+0

'для ключа в menu.keys.sort()' итерации по ключам отсортированы по алфавиту. Он работает, как ожидалось, на моем Mac. –

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

  • Нет связанных вопросов^_^