2017-06-01 74 views
0

我是一个初学者,在iOS开发中很快。我面临的问题是:我正在使用CoreData构建应用程序,该应用程序包含表格视图和表格单元格。我无法解释,因为我缺乏知识,所以我分享了截图。我看过其他问题,他们都没有解决我的错误。 THIS IS Portion Have ThreadTHIS IS AppDelegate Thread我也为AppDelegate的情况下这是tabelview RowInSection致命错误swift

@available(iOS 10.0, *) 
let ad = UIApplication.shared.delegate as! AppDelegate 
@available(iOS 10.0, *) 
let context = ad.persistentContainer.viewContext 

我对VC的代码是

import UIKit 
import CoreData 

class MainVC: UIViewController, UITableViewDelegate, UITableViewDataSource, NSFetchedResultsControllerDelegate { 

    @IBOutlet weak var tableViewmain: UITableView! 

    @IBOutlet weak var topSegment: UISegmentedControl! 

    var fetchResultControll: NSFetchedResultsController<Items>! 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     tableViewmain.delegate = self 
     tableViewmain.dataSource = self 

     doFetch() 
    } 

    func configureCell (cell: ItemsCell, indexPath: IndexPath) { 

     let item = fetchResultControll.object(at: indexPath) // remember as here 
     cell.confugringCell(item: item) 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell = tableViewmain.dequeueReusableCell(withIdentifier: "ItemsCell", for: indexPath) as! ItemsCell 
     configureCell(cell: cell, indexPath: indexPath) 

     return cell 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     if let sections = fetchResultControll.sections{ 

      let sectionInfo = sections[section] 

      return sectionInfo.numberOfObjects    
     } 
     return 0 
    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     if let allSections = fetchResultControll.sections { 

      return allSections.count 
     } 
     return 0 
    } 

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return 150 
    } 

    func doFetch() { 

     let fetchRequest: NSFetchRequest<Items> = Items.fetchRequest() 
     let dateSrot = NSSortDescriptor(key: "created", ascending: false) 
     fetchRequest.sortDescriptors = [dateSrot] 

     if #available(iOS 10.0, *) { 
      let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)  

      do { 
       try controller.performFetch() 
      } 
      catch {      
       let err = error as NSError 
       print("\(err)") 
      } 

     } else { 
      // Fallback on earlier versions 
     } 
    } 
    //controler willchnge 
    func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) { 
     tableViewmain.beginUpdates() 
    } 
    //controlerdidchnge 
    func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) { 
     tableViewmain.endUpdates() 
    } 
    //controlerdidchangeanobject 
    func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) { 

     switch(type) { 

     case .insert: 
      if let indexpath = newIndexPath { 
       tableViewmain.insertRows(at: [indexpath], with: .fade) 
      } 
      break 
     case .delete: 
      if let indexpath = indexPath { 
      tableViewmain.deleteRows(at: [indexpath], with: .fade) 
      } 
      break 
     case .update: 
      if let indexpath = indexPath { 
      let cell = tableViewmain.cellForRow(at: indexpath) as! ItemsCell 
      configureCell(cell: cell, indexPath: indexpath) // as used here 
      } 
      break 
     case .move: 
      if let indexpath = indexPath { 
      tableViewmain.deleteRows(at: [indexpath], with: .fade) 

      } 
      if let indexpath = newIndexPath { 
       tableViewmain.insertRows(at: [indexpath], with: .fade) 
      } 
      break 
     }    
    } 

我希望你明白我..任何帮助将高度赞赏

+1

fetchedResultsController初始化在哪里?根据你的代码它是'nil'并导致错误。 – vadian

+0

显示确切的行,你得到的错误 –

回答

1
做了功能

将下列行替换为您的。

var fetchResultControll: NSFetchedResultsController<Items>? 
+0

令人难以置信的它的工作感谢你很多,我不知道如何以及为什么它的工作,你可以请让我采取什么是解决它.. – AsnChalnger