【问题标题】:iOS import swift class from swift using frameworkiOS使用框架从swift导入swift类
【发布时间】:2014-11-10 01:48:13
【问题描述】:

如何从框架中导入 Swift 类?

  1. 我有 Xcode 工作区
  2. 我使用 Swift 创建了一个 Cocoa 触控框架
  3. 我在 Cocoa 触控框架中创建了一个名为 TestClass 的 Swift 类
  4. 我创建了一个 Tabbed Base iOS 应用程序
  5. 我使用import FrameWorkTest 将我的框架导入到那个选项卡式iOS 应用程序中

应用程序项目编译器找不到TestClass。 如何导入 TestClass 以在主应用程序中使用?

它说TestClass 没有定义。我还想在 FrameWork 中添加一个扩展,然后使用它。

https://github.com/ArtemKyslicyn/-SwiftImportFrameworkTest

我正在使用本教程 http://www.swift-studies.com/blog/2014/6/30/creating-a-pure-swift-framework-for-both-ios-and-mac

我正在使用 Xcode 6.0 版种子

谢谢

【问题讨论】:

    标签: ios import swift frameworks


    【解决方案1】:

    @Artem Kislitsvn:我确实看到了你的 github 存储库,

    您在目标“test”和“FrameWorkTest”之外有TestClass.Swift 文件。这超出了命名空间的范围。

    在 Swift 中,命名空间是按目标指定的。在您的情况下,“测试”和“框架工作测试”是两个目标。如果您将文件保留在目标之外,那么您的类(.swift 文件在任何时候都不会可见)。

    解决方案非常简单。您只需将您的 TestClass.Swift 文件移动到任何目标组中(通过项目资源管理器拖放)。

    按照这个你的项目工作......!

    【讨论】:

    • 我的测试类已经在 FrameWorkTest 的目标中,并且公共文件夹仅与此文件相关我在示例 github 项目中删除了此文件,然后您可以看到我在 FrameWorkTest 的命名空间中有我的测试类但在iOS 项目我不能使用 TestClass。非常感谢您的回答
    • 项目名和目标名默认相同。目标位于项目名称内。在您的示例 FrameWorkTest -> FrameWorkTest,测试(在 -> 符号之后,两个名称表示目标。-> 符号前面的名称是项目名称)。我的意思是您只需将您的 TestClass.Swift 文件移动到项目内部的目标中。它对我有用。
    【解决方案2】:

    这是我找到的一个解决方案:

    1. 新建iOS项目
    2. 项目新闻
    3. +添加目标
    4. 在出现的窗口中,选择cocoa touch framework
    5. project 并按add dependencyadd framework
    6. 成功了!

    我在这里使用了解决方案:https://github.com/ArtemKyslicyn/-SwiftImportFrameworkTest在名为AddingFrameWork的项目中

    【讨论】:

      【解决方案3】:

      将框架中的类公开。此外,如果您希望它们在框架外使用,任何变量都必须是公共的。

      public class MyClass... {
       ...
      }
      

      【讨论】:

      • 很容易忘记这个简单的步骤!希望 XCode 中出现您试图访问私有的类、方法或变量的特定错误...
      【解决方案4】:

      从框架中导入 Swift 类:

      转到您的项目 -> 构建阶段 -> 选择测试目标 -> 将二进制文件与库链接 -> + 按钮 -> 添加其他(在对话框中)-> 选择您的框架并恭喜!

      我在下面的图片中留下了解释:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-02
        • 2016-08-13
        • 2014-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多