Я нашел в Интернете пример для словаря, который помогает мне создавать разделы Tableview.Теперь моя проблема с сортировкой этих разделов.
Структура словаря выглядит следующим образом:
struct TableSection<SectionItem : Comparable&Hashable, RowItem> : Comparable {
var sectionItem : SectionItem
var rowItems : [RowItem]
static func < (lhs: TableSection, rhs: TableSection) -> Bool {
return lhs.sectionItem < rhs.sectionItem
}
static func == (lhs: TableSection, rhs: TableSection) -> Bool {
return lhs.sectionItem == rhs.sectionItem
}
static func group(rowItems : [RowItem], by criteria : (RowItem) -> SectionItem ) -> [TableSection<SectionItem, RowItem>] {
let groups = Dictionary(grouping: rowItems, by: criteria)
return groups.map(TableSection.init(sectionItem:rowItems:)).sorted()
}
}
проблема в том, что я не могу изменить эту статическую функцию <быть> для дат.Я хочу иметь возможность сортировать только строки Даты, а не другие строки.
Если я изменю
static func < (lhs: TableSection, rhs: TableSection) -> Bool {
return lhs.sectionItem < rhs.sectionItem
}
на:
static func < (lhs: TableSection, rhs: TableSection) -> Bool {
// here is die Change , from < to >
return lhs.sectionItem > rhs.sectionItem
}
в контроллере просмотра:
var sections = [TableSection<String,Class_PLA>]()
и в функции переопределения viewDidLoad ()Для метода
self.sections = TableSection.group(rowItems: CurrentPLAs, by: { (pla) -> (String) in
return pla.Date
})
дата указана в следующем формате: например, 2019_02_03_20_22_22, а в другом методе я использую следующее:
self.sections = TableSection.group(rowItems: CurrentPLAs, by: { (pla) -> (String) in
return pla.Number
})
и это число также является строковым.
работает отлично но для всех.Мне нужно сделать условие здесь, чтобы сделать разные способы сортировки.Потому что в числах все в порядке, они сортируются по 0-> 9, но для дат они не сортируются так, как я хочу
У кого-нибудь есть идеи?
Спасибо заранее! :)