簡體   English   中英

Swift CoreData:無法在 NSManagedObject 上調用指定的初始值設定項

[英]Swift CoreData: Failed to call designated initializer on NSManagedObject

我在使用核心數據對象獲取數據時遇到問題。

這是用於獲取數據的代碼

let fetchRequest = NSFetchRequest(entityName: "Country")

        var countries = [Country!]()

        do {
            countries = try self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [Country!]
        } catch {
            // Replace this implementation with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            let nserror = error as NSError
            NSLog("Unresolved error \(nserror), \(nserror.userInfo)")
            abort()
        }

這是模型定義

import Foundation
import CoreData

@objc(Country)
class Country: NSManagedObject
{

.....
}

這是模型的擴展

import Foundation
import CoreData

extension Country {

    @NSManaged var countryCode: String?
    @NSManaged var dialCode: String?
    @NSManaged var name: String?

}

我收到以下錯誤:

CoreData: error: Failed to call designated initializer on NSManagedObject class 'Country' 
fatal error: unexpectedly found nil while unwrapping an Optional value

它打破了這條線:

countries = try self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [Country!]

我不確定我是否理解這里的問題所在。 有人可以建議嗎?

謝謝!

將這兩行中的感嘆號分別去掉即可

var countries = [Country]()

countries = try self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [Country]

NSManagedObject對象可以用作非可選對象。

隱式展開的可選類型(帶有感嘆號)強制對象調用必須是initWithEntity:insertIntoManagedObjectContext:

暫無
暫無

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

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