Answer the question
In order to leave comments, you need to log in
How is Dictionary sorted by default in Swift?
When a Dictionary is created, the order of the created elements changes. How to explain such behavior? And is it possible to restore the order that is used in the code without crutches?
struct Seller {
var name:String
var description:String
}
var magazines = [
"Москва": [
Seller(name: "Веранда 32.05", description: "Каретный Ряд, 3, стр. 6"),
Seller(name: "Кинотеатр «35мм»", description: "ул. Покровка, 47/24"),
Seller(name: "Книжный магазин ArtBookShop", description: "ул. Петровка, 25, стр.1"),
Seller(name: "Книжный магазин ArtBookShop", description: "Гоголевский б-р, 10"),
Seller(name: "Книжный магазин ArtBookShop", description: "Берсеневская наб., 14, стр. 5а, институт Strelka")
],
"Санкт-Петербург": [
Seller(name: "Галерея современного искусства Anna Nova", description: "ул. Жуковского, 28"),
Seller(name: "Магазин BagBox", description: "Большой пр-т П. С., 100"),
Seller(name: "Бар Brimborium", description: "ул. Маяковского, 22–24"),
Seller(name: "Wood Bar", description: "ул. Марата, 34")
],
"Астрахань": [
Seller(name: "Jab Barbershop", description: "Наб. 1 Мая, 91 / ул. Мечникова, 9 (угол дома)")
],
"Белгород": [
Seller(name: "Кофейная компания «Калипсо»", description: "Пр-т. Богдана Хмельницкого, 79")
],
"Владивосток": [
Seller(name: "Geometria.ru", description: ""),
Seller(name: "Рюкзак-шоп «Сопка»", description: "ул. Адмирала Фокина, 5"),
Seller(name: "Студия «Неформат»", description: "ул. Алеутская, 11, здание «Приморгражданпроекта», 10-й эт., оф. 1001/1")
],
"Воронеж": [
Seller(name: "Магазин-клуб FreakFabrique", description: "ул. Никитинская, 2 (перекресток с Комиссаржевской)")
],
"Екатеринбург": [
Seller(name: "Книжный магазин «Йозеф Кнехт»", description: "ул. 8 Марта, 7")
],
"Ижевск": [
Seller(name: "Арт-пространство «Сахар»", description: "ул. Горького, 76, 2 эт. (центр напротив Национального театра и Летнего сада)")
],
"Иркутск": [
Seller(name: "Кафе NUUT", description: "ул. Сухэ-Батора, 10"),
Seller(name: "Арт-пространство «Магазин подарков №1»", description: "")
],
"Казань": [
Seller(name: "Парикмахерская Chop-Chop", description: "ул. Профсоюзная, 1")
],
"Краснодар": [
Seller(name: "Шоурум JIGO", description: "ул. Мира, 44")
],
"Красноярск": [
Seller(name: "Парикмахерская Chop-chop", description: "ул. Красной Армии, 9/1")
],
"Липецк": [
Seller(name: "Rob Roy Bar", description: "ул. Ворошилова, 1")
],
"Мурманск": [
Seller(name: "New York Coffee (Тайм-Кофейня)", description: "ул. Буркова, 13")
],
"Новороссийск": [
Seller(name: "Парикмахерская Chop-сhop", description: "ул. Мира, 35")
],
"Новосибирск": [
Seller(name: "Сеть суши-баров «Рыба.Рис»", description: "ул. Ленина, 1"),
Seller(name: "Сеть суши-баров «Рыба.Рис»", description: "пл. Калинина, Красный пр-т, 186/1 "),
Seller(name: "Сеть суши-баров «Рыба.Рис»", description: "ТПЦ »Сибирский Молл», ул. Фрунзе, 238 (1-й этаж)"),
Seller(name: "Сеть суши-баров «Рыба.Рис»", description: "ТРЦ «Аура», ул. Военная, 5 (4-й этаж)"),
Seller(name: "Сеть суши-баров «Рыба.Рис»", description: "ТРК «Калина-центр», ул. Дуси Ковальчук, 179/4 (3-й этаж)")
],
"Омск": [
Seller(name: "Парикмахерская Chop-Chop", description: "ул. Орджоникидзе, 16")
],
"Ростов-на-Дону": [
Seller(name: "«Киоск»", description: "ул. Суворова, 52а")
],
"Саратов": [
Seller(name: "Кофейня Love-Coffee", description: "ул. Московская, 157")
],
"Смоленск": [
Seller(name: "Blackberry Hookah Bar", description: "ул. Пржевальского, 2")
],
"Тула": [
Seller(name: "ПарикмахерскаяChop-Chop", description: "Учетный пер., 2")
],
"Тюмень": [
Seller(name: "Книжный магазин «Перспектива»", description: "ул. Челюскинцев, 36"),
Seller(name: "Dock Store", description: "ул. Максима Горького, 68/7")
],
"Ульяновск": [
Seller(name: "Парикмахерская Chop-сhop", description: "ул. Ленина, 89")
],
"Уфа": [
Seller(name: "Парикмахерская Chop-сhop", description: "ул. Карла Маркса, 33")
],
"Челябинск": [
Seller(name: "Интернет-издание Feelmore.ru", description: "ул. Клары Цеткин, 11, корп. 2")
]
]
Answer the question
In order to leave comments, you need to log in
No way. A dictionary, as a data structure, is not guaranteed to preserve the order of the data.
It's possible to do it like this:
NSArray *keys = [dict allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [(NSString*)obj1 compare:(NSString*)obj2];
}];
for (NSString *key in sortedKeys) {
// your actions
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question