我一直在这个错误上停留了一段时间。我有一个UITabBar
与2个选项卡。第一个包含UITableViewController
在一周的不同日期用餐。第二个标签包含带登录屏幕的UIViewController
。UITableView错误章节标题
UITableViewController
被称为'EettafelView'。它从在线来源获得它的食物(使用Alamofire)并将它们呈现在应用程序中。它们缓存在CoreData
中,并使用NSFetchedResultsController
来检索它们。为此,我使用默认的UITableViewDelegates
(numberOfRowsInSection,numberOfSections等) - 如果他们是相关的,我会发布他们在编辑。
当tableview加载时,我已经设置了fetchController并执行了一个fetch操作,我漂亮地打印了它的对象来测试它所持有的以及排序描述符是否完成了它们的工作。这导致以下情况:
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
}
}
这是我认为是通用的,因为它可以是。它可能是检索错误的章节标题的问题?
编辑: - 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!
}
编辑 - 格雷希特在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
请改变您的titleForHeaderInSection为: 返回fetchController?.sections [部分] .name 并告诉我你现在得到什么 –
你用什么'sectio您的fetchedResultsController中的“nNameKeyPath”? –