一般情况

iOS中coredata 如果需要某个表指定一个类只需要在xcode中设置即可。
例如:image.png
红框部分就是设置的地方。
对应的声明就是

1
2
3
4
class Order: NSManagedObject {

@NSManaged var oId: String
}

iOS 13后

但是升级到iOS13后出现了新问题。在iOS13之前的手机上运行

1
let a = NSEntityDescription.insertNewObject(forEntityName: className, into:managedObjectContext!) as! Order

完全没问题。iOS 13上就会崩溃。报错信息类似这种

Could not cast value of type ‘NSManagedObject_Order_’ (0x600000177960) to xxxx

经过一番摸索找到了问题修改办法。

解决办法

1 将coredata设置的Current Product Module删除(红框部分)
image.png

2 在Order.swift文件中加入@objc(Order)

1
2
3
4
5
6
7
8
9
import Foundation
import CoreData
@objc(Order)

class Order: NSManagedObject {

@NSManaged var oId: String

}