我正在开发一个使用Core Data的应用程序.当我使用以下方法创建实例时:
let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: appDelegate.managedObjectContext)
let user = User(entity: entity, insertIntoManagedObjectContext: appDelegate.managedObjectContext)
Run Code Online (Sandbox Code Playgroud)
我在日志中收到警告:
CoreData: warning: Unable to load class named 'User' for entity 'User'. Class not found, using default NSManagedObject instead.
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?
另一个问题是,如何在NSManagedObject子类中定义实例方法?
编辑:
我已经指定了实体的类,如下面的屏幕截图所示:

尝试运行我的应用程序时出现以下错误
致命错误:对类'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
}
}
Run Code Online (Sandbox Code Playgroud)
和数据模型
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="6220.8" systemVersion="13E28" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
<entity name="CatalogItem" representedClassName="CatalogItem" syncable="YES">
<attribute name="catalogItemId" optional="YES" …Run Code Online (Sandbox Code Playgroud)