Если «две буквы одинаковы для каждой записи» и если всегда есть четыре цифры, то просто сортируйте:
let input = ["un0098", "un0099", "un1000", "un1001", "un1002", "un0100", "un0101"]
let output = input.sorted()
output // ["un0098", "un0099", "un0100", "un0101", "un1000", "un1001", "un1002"]
Как видите, это правильный ответ.
Исходя из этого, теперь вы можете перейти к группировке в словарь и отсортировать по ключу, например так:
let input = ["un0098", "un0099", "un1000", "un1001", "un1002", "un0100", "un0101"]
let output = input.sorted()
let d = Dictionary(grouping: output, by: { s -> String in
let ix = s.index(s.startIndex, offsetBy:2)
let ix2 = s.index(ix, offsetBy:2)
return String(s[ix..<ix2])
})
let model = d.sorted{$0.key < $1.key}
Теперь model
подходит в качестве источника данных для вашей таблицыview:
[(key: "00", value: ["un0098", "un0099"]),
(key: "01", value: ["un0100", "un0101"]),
(key: "10", value: ["un1000", "un1001", "un1002"])]
Если это не совсем то, что вы хотели, должно быть легко увидеть, как это настроить.Структура и order правильные, поэтому, если данные не совсем нужного формата, вы можете изменить их.Например, если вам не нравится начальный ноль в именах ключей, вы можете легко избавиться от него.