【问题标题】:Using Swift classes inherited from Objective C libraries code in Objective C code在 Objective C 代码中使用继承自 Objective C 库代码的 Swift 类
【发布时间】:2015-06-12 13:29:12
【问题描述】:

我正在开发一个 Swift 项目,使用几个 ObjC 库。 其中之一是SWTableViewCell。我的应用列表的单元格继承自 SWTableViewCellUITableViewCell 的子类,它在单元格上添加了滑动操作。

使用 cocoapods 添加库。

我想在我的主项目中将一些 Swift 代码导入 ObjC。 project-Swift.h 正在按应有的方式生成(包含从 NSObject 继承的每个 Swift 类,注释为 @objc),但它包含错误:

project-Swift.h:135:31: Cannot find interface declaration for 'SWTableViewCell', superclass of 'MySWTableViewCell'; did you mean 'UITableViewCell'?

如何补救这种情况? 我需要正确生成标头才能在 ObjC 中使用 Swift 类 我的目标是要么忽略这些类,要么让 XCode 在 project-Swift.h 期间导入额外的标头

【问题讨论】:

    标签: ios objective-c swift cocoapods


    【解决方案1】:

    这应该可以解决您的问题:

    1. 在您的项目中创建一个桥接头文件:文件 > 新建 > 文件 >(iOS 或 OS X)> 源代码 > 头文件
    2. 在您的 Objective-C 桥接头文件中,导入您想要向 Swift 公开的所需的 Objective-C 头文件:在您的情况下,您需要 #import "SWTableViewCell.h"

    【讨论】:

    • 为什么不能将这个#import 添加到 swift 标头中? (只是古玩我仍然使用 obj-c 从未接触过 swift)
    • 我只是按照Apple提出的方法。您是指哪个 Swift 标头? Swift 不使用头文件作为 Objectve-C。
    • Swift 中没有标题?!哇,好吧 :-) 现在我学到了一些关于这只野兽的新东西!谢谢
    • @user3351949:如果您可以花一些时间学习 Swift 的基本概念,我强烈建议您这样做。我来自 Android/Java 方面,总是在使用 Objective-C 时有点挣扎。但是使用 Swift,您可以以更简单的方式完成工作。但像往常一样,新概念的学习曲线在开始时似乎是一个障碍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 2016-05-16
    相关资源
    最近更新 更多