【问题标题】:Using Objective-C code in iOS Cocoa Static Library project with Swift code in iOS Application project在 iOS Cocoa 静态库项目中使用 Objective-C 代码和在 iOS 应用程序项目中使用 Swift 代码
【发布时间】:2014-12-09 07:30:31
【问题描述】:

我正在寻找一个简单的过程,用于将来自共享库项目的 Objective-C 代码与来自应用程序项目的 Swift 代码结合起来,但到目前为止还没有成功:

  1. 启动 Xcode 6.1.1
  2. 创建工作区测试
  3. 创建 iOS Cocoa Touch 静态库项目 TestLibrary 并将其添加到工作区
  4. 创建 iOS Single View Application 项目测试(语言:Swift)并将其添加到工作区
  5. import TestLibrary 添加到 ViewController.swift

如果我现在构建测试,我会在 ViewController.swift 中收到此错误:No such module: ‘TestLibrary’

大概有两个障碍必须克服:

  1. 告诉 TestLibrary 应该“导出”TestLibrary.h。添加(可能)必需的bridging header 文件的正确语法和过程是什么?
  2. 告诉Test TestLibrary 所在的位置。由于应用程序和静态库项目都属于同一个工作区(并且彼此相邻地位于文件系统中),我假设不需要明确的步骤,或者是否存在?

总而言之,我的问题是:即使我随后将let test = TestLibrary() 添加到 ViewController.swift,我如何才能克服构建错误,即 Test(Swift 代码库)如何使用 TestLibrary(Objective-C 代码基础)?

【问题讨论】:

    标签: xcode swift import static-libraries xcode6.1


    【解决方案1】:

    此过程似乎有效(针对单个应用目标):

    1. 不要添加import TestLibrary,因为 Swift 和 Objective-C 代码将驻留在同一个应用目标中
    2. 创建Test-Bridging-Header.h 进行测试并添加#import "TestLibrary/TestLibrary.h"
    3. 为测试设置构建设置Objective-C Bridging Header: Test/Test-Bridging-Header.h
    4. 将 libTestLibrary.a 从 TestLibrary(在 Products 下)拖到 Test 的 Link Library With Binaries(在 Build Phases 下)
    5. 添加let test = TestLibrary() 例如里面viewDidLoadin ViewController.swift

    瞧...

    【讨论】:

      【解决方案2】:

      就我而言,我必须在桥接文件中添加框架的所有 .h 文件,这解决了问题。还要从 swift 文件中删除 import TestLibrary

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多