Swift dynamicCast错误,同时插入新的对象到数据库
我有一个字典,我有我想要插入到数据库中的所有数据作为新的对象。 问题是当我尝试抛出新创build的对象,它使我例外:
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
replaceGroup它的作品,我可以插入到AppData
表。 正如我之前所说,除了参数外,它们具有相同的结构。 但是当我尝试插入Group对象时,它给了我dynamic的强制转换exception。 我怎么解决这个问题?
我通过不同的方式初始化实体对象来解决这个问题,如果你实现从超类(NSManagedObject)的启动方法,如:(在Group.swift中)
init(entity: NSEntityDescription!, insertIntoManagedObjectContext context: NSManagedObjectContext!) { super.init(entity: entity, insertIntoManagedObjectContext: context) }
你可以像这样创build对象:
var desc:NSEntityDescription = NSEntityDescription.entityForName("Group",inManagedObjectContext:appDelegate.managedObjectContext) var group:Group = Group(entity:desc, insertIntoManagedObjectContext: appDelegate.managedObjectContext)
我读过的大部分解决scheme都是这样开始的:
var group:Group = NSEntityDescription.insertNewObjectForEntityForName("Group", inManagedObjectContext:appDelegate.managedObjectContext) as Group
所以这是问题和对象不能被铸造到自定义托pipe对象类用这种方法。 谢谢大家。
- 核心数据NSManagedObject没有有效的NSEntityDescription
- 使用Swift将CoreData实现到现有项目中
- 为二维表设置核心数据
- 处理来自服务器的JSON数据并添加/更新CoreData中的对象
- NSPredicate在多对多关系中计数> 0
- 核心数据对象在不同的tableView部分
- 不同线程(主/专用队列)中的pipe理对象上下文是否可以处理相同的对象?
- 核心数据错误133020:保存中的问题合并:
- 生成失败,错误命令/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc