如何在iOS应用程序的同一个项目中集成Objective-C和Swift窗格

我在iOS应用程序中做Objective-C。 但问题是我想添加一些Objective-C apis到我之前用cocoa豆荚成功添加的,但是,现在我想通过cocoa豆荚添加Swift Api,但是在安装时得到的问题如下。

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

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

但是,如果我从use_frameworks!中删除了“#”键,它将被安装,但是,在我的项目中找不到旧的Objective-C apis获取文件。 即使我有通过cocoa豆荚安装框架/ apis非常基本的知识。

任何人都可以build议我如何过来这个。

我有这个问题一次,我做的是use use_frameworks! 像你提到的那样,然后我改变了Objective-C imports的写法。

命令use_frameworks! 将每个窗格转换为一个Framework,因此在您的项目中,.h和.m文件不再像import通常那样可见。

因此,不要使用例如#import <AFNetworking/AFNetworking.h> ,而是使用@import AFNetworking;

从我自己的经验来看,也许这只是我的项目的一个特例。 但是把所有东西都变成框架会减慢Xcode的编译时间,而且由于某种原因,我的App Package变得更大了。

use_frameworks! 只有当它们是dynamic框架而不是静态库时才能用于Objective-C pod。 大多数stream行的第三方库都使用dynamic框架,如AFNetworkingGoogleMaps等。

确保所有的Objective-C pod都是dynamic框架。 如果你不确定用cocoapods创build一个示例项目并使用use_frameworks! 。 尝试逐个添加所有的豆荚,并找出哪一个是罪魁祸首。

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> 

构build设置 在这里输入图像说明