我正在尝试使用 NSFetchedResultController 从核心数据中获取对象,但它没有在 tableview 中显示任何数据

Posted

技术标签:

【中文标题】我正在尝试使用 NSFetchedResultController 从核心数据中获取对象,但它没有在 tableview 中显示任何数据【英文标题】:I am trying to fetch objects from core data using NSFetchedResultController but it does not display any data in tableview 【发布时间】:2017-09-05 16:25:27 【问题描述】:

我正在尝试在 TableViewController 类中使用 NSFetchedResultsController 获取对象。但这不会获取任何对象,也不会填充我的 tableview。

这是我正在使用的代码:

import UIKit
import CoreData

class TVCProductList: UITableViewController, NSFetchedResultsControllerDelegate 

    override func viewDidLoad() 
        super.viewDidLoad()
        JSProManagnedObjectContext = ((UIApplication.shared.delegate as! AppDelegate).persistentContainer).viewContext

        do 
            try JSProFetchedResultsController?.performFetch()
         catch 
            let nserror = error as NSError
            fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
        

    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
    



    // MARK: - Table view data source =============================================================================================

    override func numberOfSections(in tableView: UITableView) -> Int 
        return 0
    

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return (JSProFetchedResultsController?.fetchedObjects?.count)!
    

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "ProductName", for: indexPath)
        let listProduct = JSProFetchedResultsController?.object(at: indexPath)
        cell.textLabel?.text = listProduct?.productName
        return cell
    

    //=============================================================================================================================



    //MARK: - Setup NSFetchResultsController ==========================================================================================

    var JSProManagnedObjectContext : NSManagedObjectContext?
    var JSProFetchedResultsController : NSFetchedResultsController<JSProducts>? = nil


    var AJSProFetchedResultsController : NSFetchedResultsController<JSProducts> 
        if JSProFetchedResultsController != nil 
            return JSProFetchedResultsController!
        
        let JSProFetchRequest : NSFetchRequest<JSProducts> = JSProducts.fetchRequest()
        let JSProSortDescriptor = NSSortDescriptor(key: "productName", ascending: true)
        JSProFetchRequest.sortDescriptors = [JSProSortDescriptor]

        let BJSProFetchedResultsController = NSFetchedResultsController(fetchRequest: JSProFetchRequest, managedObjectContext: self.JSProManagnedObjectContext!, sectionNameKeyPath: "productName", cacheName: nil)
        BJSProFetchedResultsController.delegate = self

        JSProFetchedResultsController = BJSProFetchedResultsController
        do 
            try JSProFetchedResultsController?.performFetch()
         catch 
            let nserror = error as NSError
            fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
        
        return JSProFetchedResultsController!
    

    //================================================================================================================================


【问题讨论】:

【参考方案1】:

看起来您已将其设置为显示 0 个部分,而且,这就是它正在做的事情。 :-p 将其更改为 1。

【讨论】:

嗯!!但还有更多……它仍然无法正常工作。

以上是关于我正在尝试使用 NSFetchedResultController 从核心数据中获取对象,但它没有在 tableview 中显示任何数据的主要内容,如果未能解决你的问题,请参考以下文章

我正在使用 Vue.js 2.0,我正在尝试从“子组件”发出事件

我正在尝试登录 discord 但我收到错误代码

我正在尝试使用硒,但不断收到此错误 [重复]

我正在尝试使用 JavaScript 生成随机颜色代码

我正在尝试使用 Alamofire 框架。如果我尝试导入 Alamofire,我的 xcode 会显示如下错误

我正在尝试使用 ajax 和 symfony 上传文件