ios - Swift 是否可以继承一个轻量级的通用 Objective-c 类?

标签 ios objective-c swift swift2 xcode7

我有两个类,基类在 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/

相关文章:

ios - 从 dismissViewControllerAnimated 的完成 block 调用的 performSegueWithIdentifier 导致黑屏

ios - 在 Swift 中使用 SecRandomCopyBytes

android - Flutter中Socket IO实现有没有完美的插件?

ios - NavigationBar 中的 UISearchBar 颜色

objective-c - cocoa 偏好被覆盖

iphone - 使用 NSData block 对文件进行 Base64 编码

iOS - 动态高度、数据驱动、垂直滚动布局

objective-c - 在 Swift 中调用自定义 Objective-C 方法?

iphone - 关于 Objective-C 中 .h @interface 的问题

ios - Swift2 中 Textfield 上光标的背景阴影发生变化