为什么我的简单 objective c 桥接 header 找不到文件 "BraintreeCore.h"?
Why is my simple objective c bridging header failing to find the file "BraintreeCore.h"?
这真让我沮丧。我已经将 Braintree 库集成到几个 iOS 项目中,然后在 swift 中使用并且从来没有真正遇到过问题,但目前我无法让它工作。
我有followed/repeated这里的说明一遍又一遍:
https://developers.braintreepayments.com/start/hello-client/ios/v4
具体来说,我将 pod 'Braintree' 放入我的 Podfile,运行 pod 安装和 pod 更新,并验证了 Braintree 库现在出现在 Pods 目录中。
我现在也重新做了 3 次桥接 header,小心地将目标设置到我的应用程序。我也一遍又一遍地验证我已经在我的构建设置中将 objective c 桥接 header 设置为正确的文件,并成功地为其他 [=45] 创建了桥接 header =] 文件。可悲的是,尽管以下几行在桥接 header:
中不起作用
#import "BraintreeCore.h"
#import "BraintreeUI.h"
它们都给出了相同类型的编译错误,说 BraintreeCore.h 找不到文件。
我能够在没有出现错误的情况下执行以下操作:
#import "Pods/Braintree/BraintreeCore/Public/BraintreeCore.h"
但是当我尝试为 BraintreeUI.h 做同样的事情时:
#import "Pods/Braintree/BraintreeUI/Public/BraintreeUI.h"
它将我链接到 BraintreeUI.h 文件并告诉我 "BraintreeCore/BraintreeCore.h" 文件未找到 BraintreeUI.h 文件中的这一行:
#import <BraintreeCore/BraintreeCore.h>
我做错了什么??这应该是直截了当的,但它已经激怒了我 12 个多小时。
完全披露:我在 Braintree 工作,负责 iOS SDK。
您的桥接 header 不需要您指定伞 header 文件的路径。这可能表明您的 Xcode 项目的构建配置已设置,因此 Xcode 的构建系统无法找到 header 文件。在典型的项目中,你应该可以做到这一点。
我的建议是仔细查看 项目 > 构建设置 > 搜索路径 设置。特别是,Header 搜索路径 设置应包含一个如下所示的条目:
"${PODS_ROOT}/Headers/Public/Braintree"
如果不是,我怀疑 CocoaPods 不能很好地处理您的 Xcode 项目。您可能想尝试 de-integrating 和 re-integrating。使用 CocoaPods 1.0,你应该可以做到 pod deintegrate
,确保你的 Pods/
文件夹被删除,并且 运行 pod install
。最坏的情况可能是,您可能只想从一个 brand-new Xcode 项目开始并拖过您的旧源文件(尽管这可能会很痛苦)。
你找到解决办法了吗,HelloCoding?面临同样的问题...
就我而言,我注意到 Braintree 文档说 "If your app is written in Swift but your CocoaPods integration does not use dynamic frameworks, you can import Braintree in a bridging header"。
所以我从桥接文件中删除了导入,并在我的 Podfile 中包含了一条 "use_frameworks!" 指令。
我不知道这是否是被批准的解决问题的方法,但它似乎对我有用。
这真让我沮丧。我已经将 Braintree 库集成到几个 iOS 项目中,然后在 swift 中使用并且从来没有真正遇到过问题,但目前我无法让它工作。
我有followed/repeated这里的说明一遍又一遍:
https://developers.braintreepayments.com/start/hello-client/ios/v4
具体来说,我将 pod 'Braintree' 放入我的 Podfile,运行 pod 安装和 pod 更新,并验证了 Braintree 库现在出现在 Pods 目录中。
我现在也重新做了 3 次桥接 header,小心地将目标设置到我的应用程序。我也一遍又一遍地验证我已经在我的构建设置中将 objective c 桥接 header 设置为正确的文件,并成功地为其他 [=45] 创建了桥接 header =] 文件。可悲的是,尽管以下几行在桥接 header:
中不起作用#import "BraintreeCore.h"
#import "BraintreeUI.h"
它们都给出了相同类型的编译错误,说 BraintreeCore.h 找不到文件。
我能够在没有出现错误的情况下执行以下操作:
#import "Pods/Braintree/BraintreeCore/Public/BraintreeCore.h"
但是当我尝试为 BraintreeUI.h 做同样的事情时:
#import "Pods/Braintree/BraintreeUI/Public/BraintreeUI.h"
它将我链接到 BraintreeUI.h 文件并告诉我 "BraintreeCore/BraintreeCore.h" 文件未找到 BraintreeUI.h 文件中的这一行:
#import <BraintreeCore/BraintreeCore.h>
我做错了什么??这应该是直截了当的,但它已经激怒了我 12 个多小时。
完全披露:我在 Braintree 工作,负责 iOS SDK。
您的桥接 header 不需要您指定伞 header 文件的路径。这可能表明您的 Xcode 项目的构建配置已设置,因此 Xcode 的构建系统无法找到 header 文件。在典型的项目中,你应该可以做到这一点。
我的建议是仔细查看 项目 > 构建设置 > 搜索路径 设置。特别是,Header 搜索路径 设置应包含一个如下所示的条目:
"${PODS_ROOT}/Headers/Public/Braintree"
如果不是,我怀疑 CocoaPods 不能很好地处理您的 Xcode 项目。您可能想尝试 de-integrating 和 re-integrating。使用 CocoaPods 1.0,你应该可以做到 pod deintegrate
,确保你的 Pods/
文件夹被删除,并且 运行 pod install
。最坏的情况可能是,您可能只想从一个 brand-new Xcode 项目开始并拖过您的旧源文件(尽管这可能会很痛苦)。
你找到解决办法了吗,HelloCoding?面临同样的问题...
就我而言,我注意到 Braintree 文档说 "If your app is written in Swift but your CocoaPods integration does not use dynamic frameworks, you can import Braintree in a bridging header"。
所以我从桥接文件中删除了导入,并在我的 Podfile 中包含了一条 "use_frameworks!" 指令。
我不知道这是否是被批准的解决问题的方法,但它似乎对我有用。