gpt4 book ai didi

ios - fetchedResultsController 不断在每一行中显示相同的实体

转载 作者:行者123 更新时间:2023-11-28 09:02:21 24 4
gpt4 key购买 nike

我使用了我在网络上流行的核心数据教程之一中找到的代码:

    lazy var fetchedResultsController: NSFetchedResultsController = {
let medicinesFetchRequest = NSFetchRequest(entityName: "Medicine")
let primarySortDescriptor = NSSortDescriptor(key: "name.order", ascending: true)

medicinesFetchRequest.sortDescriptors = [primarySortDescriptor]

let frc = NSFetchedResultsController(
fetchRequest: medicinesFetchRequest,
managedObjectContext: self.managedObjectContext!,
sectionNameKeyPath: "name",
cacheName: nil)

frc.delegate = self

return frc
}()

然后我修改tableView的委托(delegate)方法

   func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell: DrugCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! DrugCell
var medicine = fetchedResultsController.objectAtIndexPath(indexPath) as! Medicine
cell.drugName.text = medicine.name
return cell
}

结果是我的 TableView 中充满了具有相同名称的完全相同的实体,而不是相应行中的每个实体。

我尝试了其他仅使用 fetchRequest 而不使用 fetchResultsController 的方法,这实际上对我有用,但由于重新加载表和其他内容而出现问题,我想 fetchedResultsController 是填充 tableView 时所需的模式。

编辑:

弄明白了,我按如下方式实现了 tableView 数据源方法,它起作用了。

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
if let sections = fetchedResultsController.sections {
return sections.count
}

return 0
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let sections = fetchedResultsController.sections {
let currentSection = sections[section] as! NSFetchedResultsSectionInfo
return currentSection.numberOfObjects
}

return 0
}

无论如何,我很高兴知道为什么这个特定的实现可以工作?在我刚刚在 numberOfRowsInSection 方法中返回 costant(用于测试)之前,我还没有实现 NumberOfSectionsInTableView。像这样

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}

最佳答案

不确定这是否是导致问题的原因,但看起来您忘记在“tableview: cellForRowAtIndexpath:”数据源方法中返回单元格。

在您的单元格配置代码之后添加一个返回单元格

关于ios - fetchedResultsController 不断在每一行中显示相同的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31682219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com