func fetchRequestFromViewContext(nameOfEntity: NSManagedObject) {
let fetchRequest = NSFetchRequest<nameOfEntity>(entityName: "\(nameOfEntity)")
do {
let result = try? CoreDataStack.instance.viewContext.fetch(fetchRequest)
}
}
尝试抽象核心数据获取请求,因此创建托管对象类型的参数并将其传递到通用获取请求中,但不允许我,我在抽象此核心数据获取请求方面是否走在正确的轨道上?
最佳答案
NSFetchRequest(entityName:)
需要 String
但是nameofEntity
被给出为 NSManagedObject
。将其更改为 String
然后还传入实体的类型。您可以使用泛型(下面的<T>
)来允许任何符合NSManagedObject
的类。 .
func fetchRequestFromViewContext<T: NSManagedObject>(nameOfEntity: String, type: T.Type) {
let fetchRequest = NSFetchRequest<T>(entityName: nameOfEntity)
do {
let result = try? CoreDataStack.instance.viewContext.fetch(fetchRequest)
}
}
要调用它,您只需执行以下操作:
fetchRequestFromViewContext(nameOfEntity: "YourEntity", type: YourEntity.self)
关于swift - 抽象核心数据获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680199/