Swift 是否可以从轻量级泛型 Objective-c Class 继承?
Is it possible for Swift to inherit from an lightweight generic Objective-c Class?
我有两个 classes,基础 class 在 Obj-c 中,子 class 在 Swift.
中
Obj-c class 使用新的 XCode 7 的轻量级通用特性定义如下:
@interface BaseController<T: SFObject *> : UIViewController
@property(nonatomic, strong) T model;
@end
这对 Obj-c subclasses 来说效果很好。
现在 Swift 如果我像往常一样定义泛型类型,我会收到以下错误:
Cannot specialize non-generic type 'BaseObjcController'.
我的第二个class定义如下:
class SwiftController: BaseObjcController<SFUser> {
}
如有任何帮助,我们将不胜感激。
谢谢。
更新: 从 Swift 3 开始, Objective-C 轻量级泛型 是 导入到 Swift。有关详细信息,请参阅
旧答案: 来自Interacting with Objective-C APIs:
NOTE
Aside from these Foundation collection classes, Objective-C
lightweight generics are ignored by Swift. Any other types using
lightweight generics are imported into Swift as if they were
unparameterized.
所以目前这是不可能的。正如你所看到的
"Generated Interface"助手查看,你的Objective-Cclass被导入了
到 Swift 为
public class BaseController : UIViewController {
public var model: SFObject!
}
Apple 开发者论坛也对此进行了讨论:
随时提交增强错误报告!
我有两个 classes,基础 class 在 Obj-c 中,子 class 在 Swift.
中Obj-c class 使用新的 XCode 7 的轻量级通用特性定义如下:
@interface BaseController<T: SFObject *> : UIViewController
@property(nonatomic, strong) T model;
@end
这对 Obj-c subclasses 来说效果很好。
现在 Swift 如果我像往常一样定义泛型类型,我会收到以下错误:
Cannot specialize non-generic type 'BaseObjcController'.
我的第二个class定义如下:
class SwiftController: BaseObjcController<SFUser> {
}
如有任何帮助,我们将不胜感激。 谢谢。
更新: 从 Swift 3 开始, Objective-C 轻量级泛型 是 导入到 Swift。有关详细信息,请参阅
旧答案: 来自Interacting with Objective-C APIs:
NOTE
Aside from these Foundation collection classes, Objective-C lightweight generics are ignored by Swift. Any other types using lightweight generics are imported into Swift as if they were unparameterized.
所以目前这是不可能的。正如你所看到的 "Generated Interface"助手查看,你的Objective-Cclass被导入了 到 Swift 为
public class BaseController : UIViewController {
public var model: SFObject!
}
Apple 开发者论坛也对此进行了讨论:
随时提交增强错误报告!