栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当通过参数传递泛型类型时,Swift无法推断泛型类型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当通过参数传递泛型类型时,Swift无法推断泛型类型

我的建议有些不同。它使用 静态 方法

在子类上调用

loadFromDB
和。好处是,始终返回关联的类型,而无需任何其他类型强制转换。
fetch``NSManagedObject

另一个变化是

throw
错误。由于Core Data
API广泛依赖于
throw
错误,因此我建议删除
CoreDataResult<Value>
。所有错误均已通过。成功返回对象,失败返回错误。

我省略了

id
相关的代码和
update
方法。您可以添加一个
static func predicate(for id : ID)

protocol CoreDataWriteManagerProtocol {    associatedtype ManagedObject : NSManagedObject = Self    static var persistentContainer : NSPersistentContainer { get }    static var entityName : String { get }    static func loadFromDB(predicate: NSPredicate?) throws -> ManagedObject    static func fetch(request: NSFetchRequest<ManagedObject>) throws -> ManagedObject    static func insertNewObject() -> ManagedObject}extension CoreDataWriteManagerProtocol where Self : NSManagedObject {    static var persistentContainer : NSPersistentContainer {        return (UIApplication.delegate as! AppDelegate).persistentContainer    }    static var entityName : String {        return String(describing:self)    }    static func loadFromDB(predicate: NSPredicate?) throws -> ManagedObject {        let request = NSFetchRequest<ManagedObject>(entityName: entityName)        request.predicate = predicate        return try fetch(request: request)    }    static func fetch(request: NSFetchRequest<ManagedObject>) throws -> ManagedObject {        guard let results = try? persistentContainer.viewContext.fetch(request) else { throw CoreDataResponseError.fetch(entityName: entityName)        }        if let result = results.first { return result        } else { throw CoreDataResponseError.idDoesNotExist        }    }    static func insertNewObject() -> ManagedObject {        return NSEntityDescription.insertNewObject(forEntityName: entityName, into: persistentContainer.viewContext) as! ManagedObject    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385448.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号