能否从 AnyObject 中获取 Self?
看这个例子:
// Superclass
class ManagedObject {
class func findByID(id: String) -> AnyObject? {
let objects = objectsWithPredicate(NSPredicate(format: "id == %@", id))
return objects.firstObject() // Returns AnyObject
}
}
// Subclass
class User : ManagedObject {
class func returnFirstSelf() -> Self? {
return findById("1") // This doesn't work because it returns AnyObject, but I need Self.
}
}
如果不行,最好的替代方法是什么?如何确保在调用
User.returnFirstSelf()
时,编译器返回User
,而在调用UserSubclass.returnFirstSelf()
时,它返回UserSubclass
。
User.returnFirstSelf()
时,编译器尝试返回一个User
。而在调用SomeUserSubclass.returnFirstSelf()
时,它会返回一个SomeUserSubclass
。 - Craig Otis