ios - 核心数据 : Unable to load class for entity

标签 ios core-data swift entity nsmanagedobject

我在使用 Core Data 中的关系时遇到问题。我创建了我的数据模型,包括以下实体:用户、对话、消息、参与者——每个实体都包含与其后的实体的一对多关系。我使用 Editor -> Create NSManagedObject Subclass 为每个实体生成了类,它为每个类正确地创建了 .Swift 文件。项目已构建,但在尝试创建和保存新用户时出现以下错误:

2014-12-01 12:31:28.450 Messenger[2627:151403] CoreData: warning: Unable to load class named 'Messenger.User' for entity 'User'.  Class not found, using default NSManagedObject instead.

我确保我的实体类以项目/模块名称 (Messenger.User) 为前缀。

我还在 User 类的正上方添加了“@ObjC(User)”,并在项目的“Other Linker Flags”中添加了“-ObjC”,正如其他帖子中人们所建议的那样。这些是我能找到的所有修复程序,但我仍然遇到相同的错误。这是我的用户类的样子,供引用:

import Foundation
import CoreData
@objc(User)
class User: NSManagedObject {

    @NSManaged var api : API
    @NSManaged var username: String
    @NSManaged var userID: String
    @NSManaged var passcode: String
    @NSManaged var conversations: NSSet

    func findConversations(sourceView: MessengerViewController) {
        api.findConversations(sourceView)
    }
    func addConversation(newConversation: Conversation) {
        self.addConversationObject(newConversation)
    }
}
extension User {
    func addConversationObject(value: Conversation) {
        var items = self.mutableSetValueForKey("conversations");
        items.addObject(value)
    }
    func removeConversationObject(value: Conversation) {
        var items = self.mutableSetValueForKey("conversations");
        items.removeObject(value)
    }
}

有人知道我还做错了什么吗?我已经尝试了所有我能遇到的修复方法,但到目前为止似乎没有任何效果。

编辑:尝试创建新用户对象时出现警告,在下面的第三行:

let userContext : NSManagedObjectContext = self.appDel.managedObjectContext!
let userEntity : NSEntityDescription = NSEntityDescription.entityForName("User", inManagedObjectContext: userContext)!
var newUser = User(entity: userEntity, insertIntoManagedObjectContext: userContext)

最佳答案

引用我自己的answer ,也许您还应该确保将任何提取结果强制转换到适当的类。例如

let result = context.executeFetchRequest(request, error:nil) as [User]

为了响应您的代码更新,您或许应该尝试按如下方式插入新实例。

var user = NSEntityDescription.insertNewObjectForEntityForName( "User", 
            inManagedObjectContext: context) as User

关于ios - 核心数据 : Unable to load class for entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27236223/

相关文章:

ios - 从 pageViewController 获取 ParentViewController

swift - 在 AppDelegate 中设置 managedObjectContext

swift - 如何保存相关的核心数据对象以快速解析

objective-c - Apple 说 NSManagedObjectContext 归创建它的线程或队列所有时是什么意思?

swift - 多重变换 UIView

xcode - Xcode 的复杂表达式

ios - BRAOfficeDocumentPackage 未声明的类型

ios - 从本地联系人获取详细信息后如何区分电话号码

ios - JSQMessagesViewController 中不显示工具栏

swift - Swift 3中如何处理FBSDKGraphRequest的响应数据