【发布时间】:2014-08-23 14:32:02
【问题描述】:
我想写一个类函数,它会返回一个类类型的数组。据我了解,我可以将Self 用于objective-c instanceType。我的目标是使用fetchObjects 方法为NSManagedObject 创建一个extension。然后,此方法将返回 NSManagedObject 子类的数组。这是我的伪代码示例,但无法编译:
extension NSManagedObject {
class func fetchObjects(entity: String, context: NSManagedObjectContext, predicate: NSPredicate?, sortDescriptors: NSSortDescriptor[]?) -> Self[] {
// can't define return type of an array with type Self
// also var declaration does not work
var objects : Self[]?
return objects
}
}
知道如何定义 Self 类型的数组吗?
感谢您的帮助!
【问题讨论】:
-
你可以像这样参数化函数:
class fund fetchObjects<Self>(...) -> Self[]?但我认为你不能泛化从 ObjC 到 Swift 的桥接,这样编译器就可以保证对于每个 NSManagedObject 都会有对应的 Swift 对象。不过那会很棒,很好的问题。 -
为了清楚起见,您不是在寻找“子类”数组,而是在寻找类型为已命名超类的子类的实例数组?
-
是的,这就是我想要实现的,所以如果我在 NSManagedObject 子类上调用它,它将返回该子类的实例数组
-
但是如果我声明
,它不是用作泛型吗,好像我会写 class fund fetchObjects ?还是当前的类类型?