我正在尝试使用 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,我正在尝试从“子组件”发出事件