【问题标题】:Load more in bottom UITableView using NSFetchedResultsController使用 NSFetchedResultsController 在底部 UITableView 中加载更多内容
【发布时间】:2016-10-18 11:45:21
【问题描述】:

当用户位于最后一个单元格时,我想加载更多单元格。我使用 CoreData 并从中获取数据。我使用this 回答做我想做的事,但它没有用。会出现什么问题?我还有一个问题。我不知道为什么只使用第一个实现。

首次实施

var fetchedResultsController: NSFetchedResultsController {
    let moc = DatabaseController.sharedInstance.managedObjectContext
    let fetchRequest = NSFetchRequest()
    let entity = NSEntityDescription.entityForName("Coctail", inManagedObjectContext: moc)

    fetchRequest.entity = entity
    fetchRequest.fetchLimit = 10
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]

    let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest,
                                                               managedObjectContext: moc,
                                                               sectionNameKeyPath: nil,
                                                               cacheName: nil)
    aFetchedResultsController.delegate = self

    do {
        try aFetchedResultsController.performFetch()
    } catch {
        fatalError("\(error)")
    }
    return aFetchedResultsController
}

第二次实施

func initilizeFetchedResultsController() {
    let moc = DatabaseController.sharedInstance.managedObjectContext
    let fetchRequest = NSFetchRequest()
    let entity = NSEntityDescription.entityForName("Coctail", inManagedObjectContext: moc)

    fetchRequest.entity = entity
    fetchRequest.fetchLimit = 10
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]

    let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest,
                                                               managedObjectContext: moc,
                                                               sectionNameKeyPath: nil,
                                                               cacheName: nil)
    aFetchedResultsController.delegate = self

    do {
        try aFetchedResultsController.performFetch()
    } catch {
        fatalError("\(error)")
    }
    fetchedResultsController = aFetchedResultsController
}

【问题讨论】:

    标签: ios swift uitableview core-data


    【解决方案1】:

    如果没有看到使用fetchedResultsController 或称为initilizeFetchedResultsController() 的其他代码,很难说出第一个解决方案的原因,但第二个解决方案却没有。

    您没有获得更多数据的原因是您已将您的 fetchLimit 硬编码为 10。无论您做什么,您只会得到 10 个结果。

    您需要更改 fetchLimit 以获取更多数据。看看这个答案——它类似于你需要做的:https://stackoverflow.com/a/6786931/5605379

    【讨论】:

    • 我在answer 中这样做,我碰巧 fetchLimit
    猜你喜欢
    • 2016-04-07
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2012-10-23
    • 2013-04-04
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多