如何在iOS应用程序中将Objective-C和Swift pod集成到同一项目中

时间:2017-06-01 08:09:19

标签: ios objective-c iphone xcode cocoapods

我正在iOS应用中做Objective-C。但问题是我想添加几个Objective-C apis,我之前已经成功添加了可可豆荚,但是,现在我想通过可可豆荚添加Swift Api,但是安装时遇到的问题是:

[!]用Swift编写的Pod只能作为框架集成;将use_frameworks!添加到您的Podfile或目标以选择使用它。正在使用的Swift Pod是:apis

但我不能手动添加它,因为它的api很大,而且它包含子文件夹。

但是,如果我从use_frameworks中删除“#”键,它就会被安装,但是,在我的项目中找不到旧的Objective-C apis获取文件。 即使我对通过可可豆荚安装frameworks / apis有非常基本的了解。

任何人都可以建议我如何克服这个问题。

3 个答案:

答案 0 :(得分:1)

use_frameworks!仅适用于Objective-C pod,如果它们是动态框架而非静态库。大多数流行的第三方库都使用动态框架,如AFNetworkingGoogleMaps等。

确保所有Objective-C pod都是动态框架。如果您不确定只使用cocoapods创建示例项目并使用use_frameworks!。尝试逐个添加所有pod并找出哪一个是罪魁祸首。

答案 1 :(得分:0)

我曾经遇到过这个问题,我所做的就是像你提到的那样使用new_nan_sample = (nan_sample - np.nanmean(nan_sample)) / np.nanstd(nan_sample) array([[-1.06904497, 0.26726124, 1.60356745], [-1.06904497, 0.26726124, nan]]) ,然后我改变了Objective-C use_frameworks!的编写方式。

命令imports将每个pod变为一个Framework,因此在您的项目中,use_frameworks!不再像往常一样看到.h和.m文件。

因此,您可以执行import

,而不是使用例如#import <AFNetworking/AFNetworking.h>

根据我自己的经验,也许这只是我项目的一个特例。但是将所有内容都转换为框架会减慢Xcode的编译时间,并且由于某种原因它使我的应用程序包更大。

答案 2 :(得分:0)

Podfile文件:

 platform :ios, '10.0'
    use_frameworks!

    def pods
        pod 'Alamofire', '= 4.4'
        pod 'SwiftyJSON' '= 3.1.4'
        pod 'MBProgressHUD'
    end

    target 'YourProject' do
        pods
    end

YourProject-桥接-Header.h

#import <MBProgressHUD/MBProgressHUD.h>

构建设置 enter image description here