首页 > 解决方案 > 快速转换为泛型类类型

问题描述

我的目标是将从数据库中获取的结果返回到任何给定的类型(模型)。出于某种原因,我收到错误为“使用未声明的类型'模型'”。我在这里想念什么?以及如何实现我的目标。

func fetchData<T>(entity:String, model: T)-> T? {


    let request = NSFetchRequest<NSFetchRequestResult>(entityName:entity)
    request.returnsObjectsAsFaults = false

        do {

            let result = try managedObjectContext.fetch(request)
            if result.count > 0 {

                return result as model // Point that gets the error 

            }

        } catch {

          print("Failed to retrive data")
        }

    return nil

}

标签: iosswiftcore-data

解决方案


没必要投。

根据 Joakim 的回答,我建议使该方法更通用,throw并将错误移交给调用者。

使用泛型创建获取请求摆脱了类型转换

func fetchData<T : NSFetchRequestResult>(entity:String, model: T.Type) throws -> [T] {
    let request = NSFetchRequest<T>(entityName:entity)
    request.returnsObjectsAsFaults = false
    return try managedObjectContext.fetch(request)
}

并使用它

do {
    let result = try fetchData(entity: “Foo”, model: Foo.self) 
    print(result)
} catch {
    print("Failed to retrive data")
}

推荐阅读