我有两个类,基类在 Obj-c 中,子类在 Swift 中。
Obj-c 类使用新的 XCode 7 的轻量级通用特性,定义如下:
@interface BaseController<T: SFObject *> : UIViewController
@property(nonatomic, strong) T model;
@end
这适用于 Obj-c 子类。
现在对于 Swift,如果我像往常一样定义泛型类型,我会收到以下错误:
Cannot specialize non-generic type 'BaseObjcController'.
我的第二个类定义如下:
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”助手 View ,你的Objective-C类被导入了 以 swift 为
public class BaseController : UIViewController {
public var model: SFObject!
}
Apple 开发者论坛也对此进行了讨论:
请随时提交增强错误报告!
关于ios - Swift 是否可以继承一个轻量级的通用 Objective-c 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32628297/