如何使用swift在iOSembedded式dynamic框架中使用第三方库

现在我有一个像testApp一样的项目,使用一些像alamofire这样的第三方库和Objective-C中的其他库。

现在我想添加一个今天的小部件。 根据一些教程,我创build了一个新的目标“testAppKit”作为共享的dynamic框架,并将“testAppWidget”作为今天的扩展。 公共代码将在testAppKit中重用。

现在我需要在testAppKit中使用第三方库。 并在testAppKit的构build阶段添加lib和header。 然后在testAppKit.h中添加#import <theLib/TheHeader.h> 。 但是有一个错误:

 Include of non-modular header inside framework module 'testAppKit' 

所以,我想知道如何在这种embedded式dynamic框架中使用第三方库(也许在Swift或Objective-C中)。

我在我的应用程序中使用Dropbox Datastore API,并最终使其工作于embedded式Cocoa Touch框架,以共享包含应用程序和Today Extension的代码。

我发现,在embedded式框架的Swift文件中,我可以导入项目中的任何第三方框架(即Farbic.framework,Crashlytics等),而不是Dropbox。

有什么区别? “模块”文件夹! Dropbox.framework不提供模块映射文件。 所以我根据我在Fabric.framework中find的内容创build了它:

  1. 转到项目目录中的Dropbox.framework文件夹。
  2. 创build新的文件夹“模块”,并进入
  3. 创build一个名为“module.modulemap”的文件

该文件的内容:

 framework module Dropbox { umbrella header "Dropbox.h" export * module * { export * } } 

这样做后,我需要添加导入path。

  1. 转到您的项目文件
  2. select您的embedded式框架目标
  3. 转到“构build设置”,find“Swift编译器 – searchpath”
  4. 将path添加到您的Dropbox.framerowk并设置“recursion”选项。

我想在这里放一个截图,但由于我的“声誉”,我还不能这样做)

现在我可以在我的swift文件中做“导入Dropbox”:)

希望这可以帮到你 :)