由于CocoaPods 0.36可供任何人使用,而且他们现在提供Swift和框架支持,我今天有一个问题困扰着我.
我在我的项目目录中创建Podfile,用以下内容填充它:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'AFNetworking'
pod 'SwiftyJSON'像往常一样运行pod install ..。你知道这个故事。但是当我打开我的.xcworkspace并进入任何一个ViewController和import SwiftyJSON时,它只是起作用了,但是当我尝试使用AFNetworking做同样的事情时,我得到了No such module 'AFNetworking'。当然,我可以创建一个Bridging-Header并以Objective的方式导入它,但是当我阅读这博客文章时,我可以看到:
若要在Swift中使用此子规范,而不需要生成伞头,则需要创建桥接头并使用类似于
#import <AFNetworking/AFNetworking+UIKit.h的导入。使用生成的伞头,您只需要import AFNetworking,如果您的Podfile中包含了子规范。
如果我错了,请纠正我,但如果我们用CocoaPods添加库,则不再需要手动桥接头,对吗?那么,为什么这不起作用?
发布于 2015-01-12 20:44:00
正如我所想的..。我在OP中提供的这个例子是错误的..。嗯,基本上是正确的,因为它的工作原理是应该的。让我给你举个反例。
我有一个Swift项目,但我只想使用目标C荚(AFNetworking,SSPullToRefresh等)。现在,我们遇到了一些问题,因为当您在Podfile中提供这些Objective类时,它们将作为一个静态库添加到pods目标中。现在您可能正在CocoaPods切换到Frameworks (如果您想知道区别,请阅读这问题)。回到话题..。解决这一冲突的办法有两种:
YourProject-Bridging-Header.h和#import那些库..。这是以前使用的方式,甚至在Swift集成之前。use_frameworks!中包含这个神奇的Podfile方法调用。通过这样做,您可以强制CocoaPods创建框架而不是静态库。现在,让我解释一下为什么你更喜欢第二个解决方案..。作为OP状态,CocoaPods现在自动创建伞状标头 (了解他们)。这是您跳过手动创建桥接头的方便方法。
我已经找到了一个解决方案,这里,所以如果没有这篇文章,我可能仍然在努力解决这个问题。为作者干杯!
https://stackoverflow.com/questions/27908841
复制相似问题