【问题标题】:Is it possible for Swift to inherit from an lightweight generic Objective-c Class?Swift 是否可以从轻量级的通用 Objective-c 类继承?
【发布时间】:2015-09-17 10:38:15
【问题描述】:

我有两个类,基类在 Obj-c 中,子类在 Swift 中。

Obj-c 类使用新的 XCode 7 的轻量级通用特性,定义如下:

@interface BaseController<T: SFObject *> : UIViewController
@property(nonatomic, strong) T model;
@end

这适用于 Obj-c 子类。

现在对于 Swift,如果我像往常一样定义泛型类型,我会收到以下错误:

无法专门化非泛型类型“BaseObjcController”。

我的第二类定义如下:

class SwiftController: BaseObjcController<SFUser> {

}

任何帮助将不胜感激。 谢谢。

【问题讨论】:

    标签: ios objective-c swift swift2 xcode7


    【解决方案1】:

    更新:Swift 3 开始,Objective-C 轻量级泛型被导入 Swift。有关详细信息,请参阅


    旧答案:来自Interacting with Objective-C APIs

    注意

    除了这些 Foundation 集合类之外,Objective-C Swift 忽略了轻量级泛型。任何其他类型使用 轻量级泛型被导入到 Swift 中,就好像它们是 未参数化。

    所以目前这是不可能的。正如你可以从 “Generated Interface”助手视图,你的Objective-C类被导入 斯威夫特作为

    public class BaseController : UIViewController {
        public var model: SFObject!
    }
    

    Apple 开发者论坛中也对此进行了讨论:

    随时提交增强错误报告!

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多