使用CoreData和数组填充表视图节

时间:2019-04-29 14:02:44

标签: ios swift uitableview core-data nsfetchedresultscontroller

我想用一堆文件夹填充我的表视图(类似于Apple Notes App的文件夹结构屏幕)。我希望电视中的第一个项目是一个单元格,该单元格可以合并其他文件夹中所有内容。我可以显示所有文件夹,但是在尝试确定如何显示“组合内容”文件夹时遇到了麻烦。所有单独的文件夹都在CoreData上制作,并通过NSFetchedResultsController进行馈送。

我创建了一个仅包含一个文件夹实例的数组,以用作组合文件夹的对象。我有以下代码尝试创建2个部分(1个用于组合,另一个用于单独的文件夹),但此刻它仅显示我在情况0中输入的内容。我这样做是对的吗?

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
    case 0:
        return comboFolder.count
    case 1:
        return fetchedRC.fetchedObjects?.count ?? 0
    default:
        return 0
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "folderCell", for: indexPath) as! FolderTableViewCell

    switch indexPath.section {
    case 0:
        let folder = comboFolder[indexPath.row]
        cell.updateComboFolder(with: folder)
    case 1:
        let folder = fetchedRC.object(at: indexPath)
        cell.update(with: folder)

    default:
        print("default")
    }
    return cell
 }

1 个答案:

答案 0 :(得分:0)

这是一个具有基本设置的示例项目-https://github.com/nambatee/CombinedFolders1

诀窍是调整indexPath。您正在使用2个部分,但是您的NSFetchedResultsController仅知道1个部分。因此,您需要注意不要向NSFetchedResultsController索要索引1中的对象。