iOS8 CoreData“使用未实现的初始化程序”
尝试运行我的应用程序时出现以下错误
致命错误:对类’rcresttest.CatalogItem’使用未实现的初始化程序’init(entity:insertIntoManagedObjectContext :)’
我可以通过将数据模型中的Entity类更改为其他内容来绕过此错误,但随后我将获得swift_dynamicCastClassUnconditional:尝试向下转换时。
这是beta6中的错误还是我做错了什么?
CatalogItem.swift
import CoreData @objc(CatalogItem) class CatalogItem : NSManagedObject { @NSManaged var id : String @NSManaged var slug : String @NSManaged var catalogItemId : String init(entity: NSEntityDescription!, context: NSManagedObjectContext!, catalogResultsDict : NSDictionary) { super.init(entity: entity, insertIntoManagedObjectContext: context) id = catalogResultsDict["Id"] as String slug = catalogResultsDict["Slug"] as String catalogItemId = catalogResultsDict["CatalogItemId"] as String } }
和数据模型
编辑:
更改datamodel类的名称以使其具有模块前缀在尝试强制转换后出现错误消息。
2014-08-20 10:49:15.335 rcresttest [63516:4194127] CoreData:警告:无法为实体’CatalogItem’加载名为’rcresttest.CatalogItem’的类。 找不到类,而是使用默认的NSManagedObject。
这是指定初始化程序的问题。 只需在init
前添加convenience
,并在self
上调用init(entity:insertIntoManagedObjectContext:)
而不是super
。