在子项目(框架项目)中使用第三方窗格

我正在使用XCode 8 + Swift 3。

我创build了一个名为“ MyApp ”的新的iOS项目。

然后,我创build一个名为“MySubProject”的Cocoa touch 框架项目。 (这个想法是让MyApp项目访问MySubProject代码。)

他们在同一级别的文件夹中:

- MyApp/ - MySubProject/ 

我将MySubProject添加到MyApp项目中,链接了MySubProject框架。 一切工作正常。 我的项目结构如下所示:

在这里输入图像说明

所有作品,直到这里! (MyApp代码可以访问MyService代码)

现在,我需要MySubProject使用Alamofire与后端进行通信。 所以,在MySubProject/我设置Alamofire与CocoaPod,创buildMySubProject.xcworkspace

我想我需要删除以前的MySubProject.xcodeproj并使用MySubProject.xcworkspace ,所以我删除了MySubProject.xcodeproj的引用MySubProject.xcodeproj添加到MyApp ,它看起来像这样:

在这里输入图像说明

正如你所看到的,我现在看不到MySubProject的源代码。

在Framework子项目中通过CocoaPod使用Alamofire或任何第三方库的正确方法是什么?

=====更新======我需要将Alamofire添加到MySubProject ,而不是MyApp 。 我按照Alamofire官方网站的指示手动添加Alamofire到MySubProject ,项目结构如下所示:

 - MyApp - MySubProject.xcodeproj -Alamofire.xcodeproj 

之后,我可以访问MySubProject中的Alamofire,没有编译错误。 但是,当我在模拟器中运行我的应用程序,我得到运行时错误:

 Referenced from: /Users/myname/Library/Developer/Xcode/DerivedData/MyApp-hezjlyvzxnavccenabxdepgftbrg/Build/Products/Debug-iphonesimulator/Alamofire.framework/Alamofire Reason: image not found 

如何解决?

你可以用三种不同的方法

1)直接添加依赖到你的MyApp项目

2)构buildMySubProject,并将依赖项的库添加到MyApp项目中。 (假设MySubProject将是一个库)

3)使用自定义窗格时,可以在.podspec文件中提供依赖项。 通过这种方法,我可以导入我自己的库(作为一个豆荚),这取决于其他Cocoapods。

编辑:经过一番好看,我们得出的结论是上述方法没有达到leem.fin的具体要求。 将框架包含到另一个框架中是不可能的。 但是还有两个select:

1)除了你的框架之外,还要发布第二个框架,并把它连接到你自己的框架。 这样,MySubProject和MyApp都可以链接到该框架。

2)将源代码直接导入到MySubProject中,这样就可以使用MySubProject.framework进行编译,并且可以通过链接到MySubProject的其他目标访问它们。

最简单的方法是将源直接导入MySubProject。 如果您不复制资源,但链接到该文件夹​​,则可以在需要获取最新更改时更新源代码。