2017-09-05 26 views
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! 
    } 

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

} 

回答

0

看起來你已經將它設置爲顯示0部分,並且,好,這是它在做什麼。 :-p將其改爲1.

+0

哼!但還有更多......它仍然不起作用。 –

相關問題