ios - 将新对象插入数据库时​​出现 SwiftdynamicCast 错误

标签 ios core-data swift nsmanagedobject dynamic-cast

我有一本字典,里面有我想要作为新对象插入数据库的所有数据。问题是当我尝试强制转换新创建的对象时,它给了我异常:

libswift_stdlib_core.dylib`swift_dynamicCast:

汇编代码的一部分。 我正在使用的代码是这样的:

    var group:Group  
    if (array.count == 0) {
        group = NSEntityDescription.insertNewObjectForEntityForName("Group", inManagedObjectContext:appDelegate.managedObjectContext) as Group

    }

Group类的结构如下:

    @objc(Group)
    class Group:NSManagedObject{

        @NSManaged var createDate:NSString
        @NSManaged var groupPictureUrl:NSString
        @NSManaged var groupTypeId:NSString
        @NSManaged var isDepartment:NSString
        @NSManaged var lastMessageRead:NSString
        @NSManaged var name:NSString
        @NSManaged var unreadMessageCount:NSString
        @NSManaged var groupId:NSString
        @NSManaged var lastSync:NSString
}

我还有一个名为 AppData 的 NSManagedObject 子类,它与 Group 类具有相同的结构。在插入部分代码时,如果我用 AppData 替换 Group,它就可以工作,并且我可以插入到 AppData 表中。正如我之前所说,除了参数之外,它们具有相同的结构。但是当我尝试插入 Group 对象时,它给了我动态转换异常。我该如何解决这个问题?

最佳答案

如果您从父类(super class)(NSManagedObject)实现启动方法,例如:(在 Group.swift 中),我通过以不同方式初始化实体对象来解决问题

    init(entity: NSEntityDescription!, insertIntoManagedObjectContext context: NSManagedObjectContext!) {
        super.init(entity: entity, insertIntoManagedObjectContext: context)
    } 

你可以像这样创建对象:

    var desc:NSEntityDescription = NSEntityDescription.entityForName("Group",inManagedObjectContext:appDelegate.managedObjectContext)
    var group:Group = Group(entity:desc, insertIntoManagedObjectContext: appDelegate.managedObjectContext)

我读过的大多数解决方案都是这样启动的:

  var group:Group = NSEntityDescription.insertNewObjectForEntityForName("Group", inManagedObjectContext:appDelegate.managedObjectContext) as Group

所以这就是问题所在,无法用这种方式将对象转换为自定义托管对象类。谢谢大家。

关于ios - 将新对象插入数据库时​​出现 SwiftdynamicCast 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25200149/

相关文章:

ios - 我将如何在 SwiftUI 中创建 UIView 的视觉等效项?

ios - 这是调试 CoreData 并发问题的有效方法吗?

swift : Core Data join entity

ios - Firebase map 检索纬度和经度

swift - 自定义 iOS 导航栏

ios - 使用 swiftvalidator 时,类 'AppDelegate' 的重复接口(interface)定义错误和属性有先前的声明错误

iphone - 代码签名错误 : code signing is required for product type 'Application' in SDK 'iOS 5.1'

ios - 忽略存储库中的 CocoaPods 库

iphone - 调用用户坐标、加载 PHP 文件并根据 UIApplicationDidBecomeActiveNotification 更新 UI

ios - 核心数据 3 托管对象上下文