2017-02-15 144 views
0

我的應用程序崩潰,並給我一個致命的錯誤,並不真正告訴我任何事情,所以我不知道會發生什麼。NSFetchedResultsController使用CoreData時發生致命錯誤(嘗試獲取)

這是我的代碼段,給我麻煩。

var controller: NSFetchedResultsController<Item>! 


func attemptFetch() { 

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

    let mainController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil) 

    self.controller = mainController 

    do { 
     try mainController.performFetch() 
    } catch { 

     let error = error as NSError 
     print("\(error)") 

    } 

} 

它崩潰的

let mainController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil) 

和 「上下文」 引用應用程序委託

let ad = UIApplication.shared.delegate as! AppDelegate 
let context = ad.persistentContainer.viewContext 

的錯誤是:

fatal error: Unresolved error Error Domain=NSCocoaErrorDomain Code=134140 "(null)" UserInfo={sourceModel=() isEditable 1, entities { "Crash on line 70 of the app delegate"

感謝您的幫助

+0

''controller''('NSFetchedResultsController')應該是Apple在Core Data模板中建議的一個懶惰的實例化屬性。 – vadian

+0

@vadian你可以提供蘋果文檔的鏈接,它說它應該是懶惰實例嗎? – 2017-02-15 21:02:50

+0

只需創建一個啓用了核心數據的新(Master-Detail)項目並研究提供的代碼。 – vadian

回答

0

由於您在您的AppDelegate方法中運行此取回,我懷疑您嘗試在您的CoreData持久性存儲之前執行fetch之前並且它的狀態已被初始化導致崩潰。

相關問題