我有一个对象,它使用关键路径的字典来获取请求。每个提取请求代表一个不同的实体。这一切都很好,在Swift 2.3及以下环境下工作。但是,当我试图将我的项目转换为Swift 3时,我遇到了新的获取请求的泛型问题。Fetch请求往往具有与其相关联的返回类型,但我的字典需要有返回各种类型的fetch请求。当我尝试创建一个类型为[String:NSFetchRequest<NSManagedObject>]或[String:NSFetchRequest< NSFetchRequestResult >]的字典时,请使用特定类型的NSFetchRequest<Message>类型的fetch请求。(Message是一个NSManagedObject子类)我得到一个编译器错误:
无法将“NSFetchRequest< Message >”类型的值转换为预期的字典
值类型'NSFetchRequest‘
如何将一个提取请求降为更一般的提取请求类型?
发布于 2016-06-30 15:28:27
显然,您可以从一种提取请求类型转换为另一种类型。不过有点笨重。我无法想象会出现演员失败的情况。在ObjC中,你甚至不需要演员阵容。
class A: NSManagedObject {}
class B: NSManagedObject {}
let fetchRequestA = NSFetchRequest<A>()
let fetchRequestB = NSFetchRequest<B>()
let fetchRequests: [String:NSFetchRequest<NSManagedObject>] = [
"a" : fetchRequestA as! NSFetchRequest<NSManagedObject>,
"b" : fetchRequestB as! NSFetchRequest<NSManagedObject>,
]https://stackoverflow.com/questions/38109188
复制相似问题