gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:43:57 26 4
gpt4 key购买 nike

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

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
}

我还有一个名为 AppDataNSManagedObject 子类,它与 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 - 将新对象插入数据库时​​出现 Swift dynamicCast 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25200149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com