0
我想在TableViewController類中使用NSFetchedResultsController獲取對象。但是這不會獲取任何對象,也不會填充我的tableview。我想使用NSFetchedResultController從核心數據中獲取對象,但它不會在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!
}
//================================================================================================================================
}
哼!但還有更多......它仍然不起作用。 –