NSFetchedResultsController fetchedObjects 返回 nil
Posted
技术标签:
【中文标题】NSFetchedResultsController fetchedObjects 返回 nil【英文标题】:NSFetchedResultsController fetchedObjects returning nil 【发布时间】:2017-04-23 09:41:47 【问题描述】:我使用下面的代码从核心数据中获取Article
的列表,它给了我预期的结果。
let moc = CoreDataHelper().backgroundContext
let employeesFetch = NSFetchRequest<NSFetchRequestResult>(entityName:"Article")
do
let fetchedEmployees = try moc?.fetch(employeesFetch) as! [Article]
print(fetchedEmployees.count)
catch
fatalError("Failed to fetch employees: \(error)")
输出:376
但是当我尝试使用 NSFetchedResultsController 进行获取时。 fetchedObjects 总是返回 nil。我使用了下面的代码。
fileprivate lazy var fetchedResultsController: NSFetchedResultsController<Article> =
// Create Fetch Request
let moc = CoreDataHelper().backgroundContext
// let fetchRequest: NSFetchRequest<Article> = Article.fetchRequest()
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName:"Article")
// Configure Fetch Request
fetchRequest.sortDescriptors = [NSSortDescriptor(key:"category", ascending: true)]
// Create Fetched Results Controller
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext:moc!, sectionNameKeyPath: nil, cacheName: nil)
// Configure Fetched Results Controller
fetchedResultsController.delegate = self
let quotes = fetchedResultsController.fetchedObjects
return fetchedResultsController as! NSFetchedResultsController<Article>
()
quotes
始终为零。我无法弄清楚是什么问题?
【问题讨论】:
您需要performFetch
。见apple doc
不相关,但为什么您使用子类创建未指定的获取请求?如果你写let employeesFetch = NSFetchRequest<Article>(entityName:"Article")
,你可以省略fetch
行中的类型转换。这就是泛型类型的好处。
【参考方案1】:
尝试在闭包外调用 fetchedResultsController 上的 performFetch()。
希望这会奏效。
【讨论】:
以上是关于NSFetchedResultsController fetchedObjects 返回 nil的主要内容,如果未能解决你的问题,请参考以下文章