Ios 旧图书馆,新Cocoapod

Ios 旧图书馆,新Cocoapod,ios,objective-c,swift,cocoapods,Ios,Objective C,Swift,Cocoapods,因为CocoaPods 0.36对任何人都是可用的,而且它们现在提供了Swift和框架支持,所以我今天有一个问题困扰着我 我在我的项目目录中创建Podfile,用以下内容填充它: source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' pod 'AFNetworking' pod 'SwiftyJSON' 然后像往常一样运行pod install。。。你知道这个故事。但是,当我打开我的.xcworkspace并

因为CocoaPods 0.36对任何人都是可用的,而且它们现在提供了Swift和框架支持,所以我今天有一个问题困扰着我

我在我的项目目录中创建
Podfile
,用以下内容填充它:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

pod 'AFNetworking'
pod 'SwiftyJSON'
然后像往常一样运行
pod install
。。。你知道这个故事。但是,当我打开我的
.xcworkspace
并转到任何ViewController和
导入快速JSON
时,它就可以工作了,但当我尝试使用AFNetworking做同样的事情时,我得到了
没有这样的模块“AFNetworking”
。当然,我可以创建一个桥接标题并用Objective-C方式导入,但当我阅读博客文章时,我可以看到:

要在Swift中使用此子类,而不使用生成的伞头,您需要 需要创建桥接头并使用导入,如
#导入

正如我所想。。。我在OP中提供的这个例子是不正确的。。。基本上是正确的,因为它工作正常。让我给你举个反例

我有一个Swift项目,但我只想使用Objective-C播客(AFNetworking、SSPullStoreFresh等)。现在我们遇到了一些麻烦,因为当您在
Podfile
中提供那些Objective-C pod时,它们将作为静态库添加到pods目标中。您可能已经知道CoCoapod现在正在切换到框架(如果您想知道区别,请阅读问题)。回到主题。。。有两种可能的解决冲突的方法:

  • 您可以手动创建
    YourProject bridgeing Header.h
    #import
    这些库。。。这是在快速集成之前使用的旧方法
  • 你包括这个神奇的
    使用_框架Podfile
    中进行code>method调用。通过这样做,您可以强制CoCoapod创建框架,而不是静态库
  • 现在,让我解释一下为什么您更喜欢第二种解决方案。。。正如OP所说,CoCoapod现在会自动创建伞形标题。这是跳过手动创建桥接头的方便方法


    我已经找到了一个解决方案,所以如果没有这篇文章,我可能仍然在努力解决这个问题。为作者干杯

    从您对该文档的阅读中,您是否看到了将cocoapods自动生成的伞形文件用作Obj-c项目首选方法的方法?即,将cocoapods配置为将桥接头生成为
    AFNetworking.h
    ,而不是
    Pods.h
    ,以便它始终跟踪公共头集-一个“单一真相点”?据我所知,它仅用于Swift代码的可见性。伞头正是为Swift创建的。因此,没有必要将其用于Objective-C项目。。。你为什么要这么做?我只是在混合项目中挣扎,我写的主要语言是Swift,一些POD可以是Objective-C库。伞形文件是一个与框架相关的概念,fameworks对Obj-C也是新的。伞形文件只是框架中所有公共头的汇总,是
    #import
    中的
    MyFramework.h
    。在引擎盖下,cocoapods生成一个新的、唯一命名的伞形文件,并将其注册到modulemap中,以便通过
    @import MyFramework
    使其可用。这个名字的命名和惯例是本书辩论的主题。这是Swfit和Obj-c代码查找Obj-c符号的方式。