![](/img/trans.png)
[英]New to cocoapods - I can't seem to import libraries downloaded with cocoapods
[英]Old libraries, new CocoaPods
因为CocoaPods 0.36可以被任何人使用,而且他们现在正在使用Swift和Frameworks支持我今天有一个困扰我的问题......
我在项目目录中创建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-C方式导入它但是当我阅读这篇博文时,我可以看到:
要在Swift中使用此子规范,而不使用生成的伞状头,您需要创建桥接头并使用
#import <AFNetworking/AFNetworking+UIKit.h
类的导入。 使用生成的伞标题,如果您的Podfile中包含子import AFNetworking
,则只需import AFNetworking
AFNetworking。
如果我错了,请纠正我,但我认为如果我们使用CocoaPods添加库,则不再需要手动Bridging-Header,对吧? 那么,为什么这不起作用?
正如我想的那样......我在OP中提供的这个例子是不正确的......好吧,基本上它是正确的,因为它的工作方式应该如此。 我来告诉你一个反例。
我有一个Swift项目,但我只想使用Objective-C pods(AFNetworking,SSPullToRefresh等)。 现在我们遇到了一些麻烦,因为当您在Podfile
提供这些Objective-C pod时,它们将作为静态库添加到Pods目标中。 您现在可能已经将CocoaPods切换到Frameworks (如果您想知道其中的差异,请阅读此问题)。 回到主题......这个冲突引用有两种可能的解决方案:
YourProject-Bridging-Header.h
并#import
这些库...这是在Swift集成之前使用的旧方法。 use_frameworks!
在Podfile
调用方法。 通过这样做,您可以强制CocoaPods创建框架而不是静态库。 现在,让我解释为什么你更喜欢第二种解决方案......正如OP所说,CocoaPods现在自动创建Umbrella Headers ( 了解它们 )。 这是您跳过手动创建桥接头的便捷方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.