несколько разделов с разным порядком, используя 1 NSFetchedResultsController - PullRequest
0 голосов
/ 24 мая 2018

У меня есть таблица с двумя разделами: «любимый» и «недавний», чтобы упорядочить сохраненные контакты.Я бы хотел отсортировать любимые по алфавиту, а последние по дате.У каждого контакта есть «имя» и значение «createAt» (и значение «избранное», если это избранное).

Используя сортировку ниже, у меня есть разделы «избранное» и «недавние» справильные ячейки, но оба отсортированы по алфавиту.

...
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "favorite", ascending: false),
                                    NSSortDescriptor(key: "firstName", ascending: true)]
fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: stack.viewContext, sectionNameKeyPath: "favorite", cacheName: nil)
...

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    guard let currentSection = fetchedResultsController.sections?[section] else { return nil }

    if currentSection.name == "0" {
        return "Recent".localized
    } else {
        return "Favorites".localized
    }
}

Как мне отсортировать раздел "последние" по дате?

1 Ответ

0 голосов
/ 29 мая 2018

Я решил это, вручную изменив indexPath второго раздела.У меня есть функция, которая возвращает indexPath по-разному для второго раздела.

func changeIndexPath (_ indexPath: IndexPath) -> IndexPath {
... //sort you want
}

Тогда я могу использовать функции просмотра таблицы

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
newIndexPath = changeIndexPath(indexPath)
...
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
...
}
etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...