簡體   English   中英

Swift:保存到核心數據上下文時出錯

[英]Swift : Error when saving to core data context

我的應用程序包含兩個由標簽欄控制器管理的視圖。

第一個視圖包含一個按鈕,該按鈕可從服務器下載數據並將其解析為對象。 完成之后,我將基於這些對象創建核心數據實體。 只要按下按鈕,就會刪除以前的實體,以避免添加相同的數據

第二個視圖包含可用於顯示檢索到的核心數據實體數據的表格視圖。

這是我保存數據的方法:

 func saveData()
    {

        var context:NSManagedObjectContext = self.managedObjectContext!
        var error: NSError?
        let entityDescription =
        NSEntityDescription.entityForName("Medicine",
            inManagedObjectContext: managedObjectContext!)

        for element in self.loadedArray {

            var medicine = Medicine(entity: entityDescription!,
                insertIntoManagedObjectContext: managedObjectContext)

            medicine.name = element.name
            medicine.desc = element.desc


            var error: NSError?

            context.save(&error)
            println(medicine)

        }

}

這就是我刪除數據的方式

    func deleteData() {


    let fetchRequest = NSFetchRequest(entityName: "Medicine")


    let fetchedEntities = self.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as! [Medicine]

    for entity in fetchedEntities {
        self.managedObjectContext!.deleteObject(entity)
    }

    self.managedObjectContext!.save(nil)
}

一旦從下載數據中獲取了好好加載的數組,我就保存數據

 var loadedArray:[Drug] = [] {
    didSet {
        self.saveData()
    }
}

行為是不確定的,但通常在我保存數據時出錯,然后進入表視圖,然后返回以刪除/保存新數據。 這是崩潰發生的時間,這是錯誤:

在此處輸入圖片說明

我知道這個錯誤相對難以重現,因此,我認為最好的方法是提供一個指向項目https://github.com/thedc89/MedApp的鏈接(查看最新提交)

提前致謝

編輯:

這是在第二個視圖中獲取的結果控制器:

lazy var fetchedResultsController: NSFetchedResultsController = {
    let medicinesFetchRequest = NSFetchRequest(entityName: "Medicine")
    let primarySortDescriptor = NSSortDescriptor(key: "name.order", ascending: true)

    medicinesFetchRequest.sortDescriptors = [primarySortDescriptor]

    let frc = NSFetchedResultsController(
        fetchRequest: medicinesFetchRequest,
        managedObjectContext: self.managedObjectContext!,
        sectionNameKeyPath: "name",
        cacheName: nil)

    frc.delegate = self

    return frc
    }()

此外,由於某種原因,github項目上似乎缺少數據模型,這確實很奇怪。 但是,如果實際上缺少它,我認為它不會保存任何數據,但是它是我第一次觸摸按鈕時發生的

下載項目后,即使Xcode項目中包含xcdatamodel ,它似乎也缺少。 關於SO的其他答案似乎證實了針對同一錯誤的類似問題: 此處此處

另外,具有名為order的屬性足夠通用,可以在內部使用。 嘗試將其更改為諸如itemSortOrder類的itemSortOrder或更具描述性的名稱,以避免發生沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM