NSFetchedResultsController 啥都不返回

Posted

技术标签:

【中文标题】NSFetchedResultsController 啥都不返回【英文标题】:NSFetchedResultsController returning nothingNSFetchedResultsController 什么都不返回 【发布时间】:2015-05-25 13:27:41 【问题描述】:

当我对核心数据中包含数据的表进行提取时,它似乎没有返回任何结果。

在进行提取之前,我已经对表执行了读取操作,并且数据就在那里。

这里是代码。

func fetchAllFoods() ->  NSFetchedResultsController 
    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let context: NSManagedObjectContext = appDel.managedObjectContext!

    let fetchRequest = NSFetchRequest()

    //3 - set the correct table
    let entity = NSEntityDescription.entityForName(self.entityName, inManagedObjectContext: context)
    fetchRequest.entity = entity

    fetchRequest.fetchBatchSize = 20

    let sectionSortDescriptor = NSSortDescriptor(key: "foodCategory", ascending: true)

    let sortDescriptors = [sectionSortDescriptor] //, secondSortDescriptor]

    fetchRequest.sortDescriptors = sortDescriptors

    //4 - navigate in relationship to group by startdate
    let aFetchedResultsController = NSFetchedResultsController(
        fetchRequest: fetchRequest,
        managedObjectContext: context,
        sectionNameKeyPath: "foodCategory",
        cacheName: nil)

    aFetchedResultsController.delegate = self


    return aFetchedResultsController


当我在返回前休息时,这就是表现。

没有部分,没有数据。

我确信我在这里遗漏了一些基本的东西,所以如果我需要分享更多信息,请告诉我。

非常感谢!

【问题讨论】:

【参考方案1】:

您必须在获取的结果控制器上调用performFetch:

let aFetchedResultsController = NSFetchedResultsController(...)
aFetchedResultsController.delegate = self
var error : NSError?
if !aFetchedResultsController.performFetch(&error) 
    // report error ...

【讨论】:

谢谢,我知道这是基本的东西,我不敢相信我错过了。作为旁注,“let error...”将在“&error”处引发错误。似乎使用 var 而不是 let 可以清除它。再次感谢。

以上是关于NSFetchedResultsController 啥都不返回的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 应用程序中调用 performFetch 后,是不是需要手动更新表视图?