我在Internet上找到了词典的示例,可以帮助我制作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
}
在Viewcontroller中:
var sections = [TableSection<String,Class_PLA>]()
以及在重写func 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
})
,这个数字也是字符串。
它完美运行,但对所有人而言。我需要在这里确定条件以进行不同的排序。因为在Numbers中可以,它们从0-> 9排序,但是对于日期,它们没有按我想要的排序
有任何想法吗?
非常感谢您:)