【问题标题】:ios-ntp with Xcode 7 and swift 2.0带有 Xcode 7 和 swift 2.0 的 ios-ntp
【发布时间】:2015-10-06 19:57:35
【问题描述】:

我正在尝试将ios-ntp 集成到我使用 Xcode 7、swift 2.0 和 cocoapods 开发的项目中。我正在将库添加为 pod。但是当我尝试将<ios-ntp/ios-ntp.h> 添加到我的app-BridgingHeader.h 时,Xcode 无法识别它。当我尝试简单地导入模块并通过 #import ios_ntp 使用它时; Xcode 抱怨他无法构建模块“ios_ntp”。我做错了吗?

更新。实际上Xcode由于错误而无法构建模块

'GCDAsyncUdpSocket.h' 文件未找到

但该框架存在并作为依赖添加到“ios-ntp”pod 规范中。

【问题讨论】:

标签: swift ios9 ntp


【解决方案1】:

您不需要在桥接头中#import 库,Cocoapods 应该负责让您的 pod 在 Swift 中可用。

在您的 Swift 文件中,您是否尝试过 import ios_ntp 导入库?

编辑:我想我明白了。不是 100% 确定为什么会发生这种情况,但我的直觉是它与 Cocoapods 和 ios-ntp 对 CocoaAsyncSocket 的依赖有关。关于 ios-ntp 导入 CocoaAsyncSocket 标头的一些事情正在创建一个循环依赖项,这会阻碍 ios-ntp 的构建。

解决方案: https://github.com/ruddct/ios-ntp 应该可以解决问题,该分支包含一些非常小的标头更改以在 ios-ntp 的标头中转发声明 CocoaAsyncSocket 内容,从而解决了问题。

有关此问题的更多背景信息,请参阅How to prevent circular reference when Swift bridging header imports a file that imports Hopscotch-Swift.h itself

【讨论】:

  • Xcode 自动完成功能让我可以导入 ios_ntp,但即使我使用 import ios-ntp,Xcode 也无法构建模块。而且我没有将 iOS-ntp 添加到 bridgingHeader.h 文件中。
  • 谢谢你,仍然没有机会测试你的解决方案,但这听起来很合理。
  • @rudd 你的叉子对我有用。谢谢 :-) 你要发出拉取请求吗?你现在落后了一些提交。
  • @rudd 我如何在普通的 pod 上安装你的 pod,因为我仍然遇到 swift 3 的这个错误
  • @rudd 抱歉,我是 ios 开发新手,所以我不完全理解您的意思
【解决方案2】:

当你使用 Pod 时,你必须:

  1. 打开 Pods.xcodeproj
  2. 在 Targets 中选择 ios-ntp
  3. 选择“构建阶段”选项卡
  4. 将 GCDAsyncSocket.h 和 GCDAsyncUDPSocket.h 添加到编译源和标头
  5. 记得在 ios-ntp 中将“允许框架模块中的非模块化包含”设置为“是”

对我来说,这是可行的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2015-10-20
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多