【问题标题】:How to import swift file to objective-c class, for class delegation?如何将swift文件导入objective-c类,以进行类委托?
【发布时间】:2017-09-06 18:52:13
【问题描述】:

我正在用 swift 开发我的,现在我的旧文件很少是用 Objective-c 编写的。所以我为课堂交流搭建了桥梁。

我的一个委托类是用objective-c编写的,现在我想知道哪个是调用我的委托的当前类。

我正在尝试使用 isKindOfCalss,它会触发一个错误,例如未找到标识。一旦我导入 swift 文件错误更改为前向声明。

有什么建议我应该怎么做?

在我的情况下,导入也不起作用,请参阅附件。

【问题讨论】:

  • 我使用的是 xcode 8.3,我在目标文件中使用了一些与导入 swift 类相关的问题......但没有帮助我。 ;(
  • isKindOfClass 将可用于 Swift 类,当且仅当它们从 NSObject 继承时,默认情况下不会发生。
  • HomeVC 类是 swift 类..?
  • 是的 HomeVC 是 swift 类,并使用它作为我的 objc 类的委托
  • 委托工作正常,但检查委托类的种类时出错。

标签: ios objective-c swift objective-c-swift-bridge


【解决方案1】:

以前没有遇到过你的问题,但我可以建议你重写这段代码,不要使用 isKindOfClass 东西。您可以使用一些从基类返回的枚举,然后改为检查它

@objc enum EnumSubstitution: Int {
    // several options
}

protocol YourDelegateProtocol {
   // your methods
   var enumSubstitutionForIsKindOf: EnumSubstitution {get}
}

我没有检查代码,但是,假设你明白了

编辑:

我的意思是,你可以在你的代码中使用 EnumSubstitution,所以不用写

if ([self.delegate isKindOfClass: [yourClass class]])

你只是使用

if (self.delegate.enumSubstitutionForIsKindOf == firstOption)

等等

【讨论】:

  • 我已经在 objc 中设置了协议和委托,这在 swift 中运行良好,现在我想跟踪哪个是我当前的委托对象。
  • 我的应用程序支持多语言,只是知道它不允许我导入我的 app-swift.h 文件#import "myapp-Swift.h"。可能是这个问题。
  • 你知道为什么它不允许。我已经创建了 .pch 和桥头文件。
【解决方案2】:

从您的回答来看,您的导入语句在 Swift 中缺少大写字母 S。

尝试改变

#import "HomeVC-swift.h" 

#import "HomeVC-Swift.h"

【讨论】:

  • 感谢您的帮助,问题是由于产品名称本地化所致。
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2010-09-10
相关资源
最近更新 更多