Swift 4 - Словарь, как определить использование статических функций? - PullRequest
0 голосов
/ 04 марта 2019

Я нашел в Интернете пример для словаря, который помогает мне создавать разделы 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, но для дат они не сортируются так, как я хочу

У кого-нибудь есть идеи?

Спасибо заранее! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...