Swift Bridging Obj和Obj-C类的可见性

时间:2014-06-28 15:54:23

标签: ios objective-c swift xcode6

我已经建立了桥接标头,在构建设置中指定了它的完整路径,桥接标头是自动创建的。在此之后,我在其中包含了我的obj-c头文件。但是每次调用对象构造函数的尝试都会失败:"使用未声明的标识符"。 enter image description here

我已完成的事情清单:

  1. 创建.m文件,Xcode建议创建桥接标题
  2. 将obj-c文件添加到项目中并将其导入标题
  3. 在构建设置中提供了桥接头文件的完整路径
  4. enter image description here

    1. 在代码中使用了Obj-C类型......但它没有构建。
    2. 然后,我没有提供标题的完整路径,而是提供项目所在文件夹的路径 - 没有结果。
    3. 我根据苹果文档仔细检查了所有步骤,但没有结果。 为什么?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

请按照以下步骤操作:

  1. 创建一个Swift项目
  2. 将测试类分别添加为 Cocoa Class 而不是.m和.h。 Xcode提示添加桥接头。
  3. 在桥接标题中导入测试类标题,您已经这样做了。应该没有问题在Swift中实例化测试类。
  4. 将BL_KeyChainWrapper .m和.h复制到finder中的项目目录。
  5. 将BL_KeyChainWrapper文件拖至项目并确保添加到目标
  6. 在桥接标题中导入BL_KeyChainWrapper标头。
  7. 在Swift中实例化BL_KeyChainWrapper类。
  8. 如果按照上述步骤操作,仍然有错误。您可能没有在BL_KeyChainWrapper.h中声明名为 BL_KeyChainWrapper 的类。确保在BL_KeyChainWrapper.h中,您有以下代码:

    @interface BL_KeyChainWrapper : BaseClass
    

答案 1 :(得分:0)

好吧,在创建了带有桥接头的测试项目之后,我发现了以下内容:

  1. 我添加了.m文件,Xcode建议我创建桥接标题。

  2. 我添加了.h文件,将其命名为类并以这种方式创建了Obj-C类。

  3. 在构建设置中 - 代码生成部分如下所示:

    enter image description here

    位于以下路径的桥接文件:

    ProjName / BridgHeader.h

    与.xcodeproj文件存在相同的级别。

    BUT:

    当我将已创建的Obj-C类添加到项目中并在桥接头中添加标题导入时,我无法使用它:

    enter image description here

    所以,我猜,Xcode 6 beta 2无法将现有文件添加到swift项目中。有人遇到过这个麻烦吗?因为我不想粘贴我开发5年来创建文件的所有现有库。

    P.S:

    桥接标题:

    enter image description here