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