swift - 抽象核心数据获取请求

标签 swift core-data

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/

相关文章:

ios - BaseController 委托(delegate)在选项卡栏 Controller 内的所有继承 View Controller 中不起作用

iphone - 核心数据关系错误(不是延迟加载)。关系消失

ios - 关系映射 Restkit

ios - 在核心数据中重复 NSDates,但不使用相同代码重复 NSStrings

ios - 当 inputAccessoryView 出现时,将 Collection View 聊天向上移动

objective-c - 桥接头方法参数问题

ios - 在 iOS 中使用 Swift 数据库

Swift 保持 cli 应用程序运行

ios - 如何在 Core Data 中顺序存储数据?

ios - 使用 "No Action"删除规则并改用 prepareForDeletion