Я уже давно застрял в этой ошибке. У меня есть UITabBar
с 2 вкладками. Первый содержит UITableViewController
с едой в разные даты недели. Вторая вкладка содержит UIViewController
с экраном входа.UITableView неправильные названия разделов
UITableViewController
называется «EettafelView». Он получает питание (используя Alamofire) из онлайн-источника и представляет их в приложении. Они кэшируются в CoreData
и извлекаются с помощью NSFetchedResultsController
для их представления. Для этого я использую по умолчанию UITableViewDelegates
(numberOfRowsInSection, numberOfSections и т. Д.). Если они важны, я опубликую их в редактировании.
Когда табличное представление загружается, и я установил fetchController и выполнил выборку, я довольно-напечатаю ее объекты, чтобы проверить, что он держит, и если дескрипторы сортировки выполнили свою работу. Это приводит к следующему:
Hollandse stoof met bokbier - Optional("maandag, 20 feb.")
Gehaktballetjes
Quorn gehakt
Stamppot van verse spinazie - Optional("dinsdag, 21 feb.")
Rookworst
Kaasspies
Indiase Curry - Optional("woensdag, 22 feb.")
Kip
Bloemkool
Pasta Mexicane - Optional("donderdag, 23 feb.")
Gehakt
Tofu en Bruine Bonen
Boeuf des Gardiens - Optional("vrijdag, 24 feb.")
Rundvlees
Kastanjechampignons
С кодом довольно-печати:
if let objects = fetchController?.fetchedObjects as? [Gerecht] {
for object in objects {
print("\(object.basis ?? "") - \(object.dateString)")
print("\t\(object.vlees ?? "")")
print("\t\(object.vega ?? "")")
}
}
Это именно то, как это должно быть. Таким образом, FetchController содержит правильные объекты и правильно их сортирует. Вид, однако выглядит это нравится:
Названия разделов являются неправильными. Код для получения названия разделов выглядит следующим образом:
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if let sections = fetchController?.sections, sections.count > 0 {
return sections[section].name
} else {
return nil
}
}
Что, я думаю, как родовое, как это может быть. В чем может быть проблема с получением неправильных заголовков разделов?
EDIT: - CellForRow Метод
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Eettafel") as? Eettafel_Cell
let gerecht = fetchController?.object(at: indexPath) as? Gerecht
if let gerecht = gerecht {
cell?.gerecht = gerecht
}
return cell!
}
EDIT - Герехт в cellForRow
печать описание NSManagedObject (точки останова в случае пусть Герехт) дает:
Printing description of gerecht.some:
<Almanapp.Gerecht: 0x1740b77c0> (entity: Gerecht; id: 0xd0000000000c0000 <x-coredata://A6B5411D-DF77-43DE-8084-86C76C42F68A/Gerecht/p3> ; data: {
basis = "Hollandse stoof met bokbier";
date = "2017-02-20 00:23:07 +0000";
dateString = "maandag, 20 feb.";
status = nil;
vega = "Quorn gehakt";
vlees = Gehaktballetjes;
})
Что верный.
Hollandse Stoof встретились bokbier должны быть на понедельник (maandag) (как на выход консоли) но на скриншоте на вторник (dinsdag) – Emptyless
Пожалуйста, измените названиеForHeaderInSection для: return fetchController? .sections [section] .name И скажите мне, что вы получаете сейчас –
, что вы используете для своей 'sectio nNameKeyPath' в вашем fetchedResultsController? –