Cocoa Touch框架中的Pod处理 - 设备上出现错误

15

我已经搜索了2-3个小时并尝试了多种方法,但我无法让它正常工作:

我想要实现的目标

目标是分离UI代码和业务逻辑。业务逻辑应该被封装在一个独立的框架中。一个Cocoa Touch框架。因此,例如WatchKit App中可以重用业务逻辑。

我如何尝试做到这一点

  1. 创建一个新的Xcode项目->选择单视图应用程序。
  2. 添加一个新目标->选择Cocoa Touch框架。
  3. 运行pod init。
  4. 为每个目标在Podfile中添加一些pods。
  5. 运行pod install。
  6. 在UI和框架中实现一些代码

这在模拟器上运行得非常完美。一旦我将其在设备上运行,调试器中就会出现以下错误:

dyld: Library not loaded: @rpath/SwiftAddressBook.framework/SwiftAddressBook Referenced from: /private/var/mobile/Containers/Bundle/Application/48E58889-78D4-4D71-B8DA-154ADEB98894/Pod Error Framework.app/Frameworks/PodErrorKit.framework/PodErrorKit Reason: image not found

我不知道如何解决这个问题。有什么建议吗?

我正在使用:

  • cocoapods 0.38.2
  • Xcode 6.4 (6E35b)
  • Deployment Target iOS 8

我已将项目(只是一个假项目,但是相同的错误)上传到github。您可以在此处查看它。


1
注意:这不一定是针对Swift的。使用Objective-C编写的CocoaPods和Cocoa Touch框架也会出现同样的问题。 - pkluz
你能发布 PodErrorKit 的 Podspec 吗? - Loegic
您添加的 pod 可能不支持 Swift 2.0。 - MobileGeek
@Arvind 这是 Xcode 6.4 的问题,与 Swift 2.0 无关。 - Ducky
1个回答

3
解决方法在这里 https://github.com/keithyipkw/pod-cocoa-touch-framework SwiftAddressBook.framework是动态的,所以您需要像PodErrorKit一样将其嵌入到应用程序中。详情请参考我的提交。模拟器通过某种方式能够在应用程序之外(派生数据旁边)找到框架。
由于缺少Pods.framework,我无法编译您的项目。我找不到目标,所以我将其删除了。

已验证@keithyip:(1) 打开.xcworkspace。(2) 构建阶段(3)+链接二进制文件库:SwiftAddressBook, 必需的 (4)+嵌入框架:SwiftAddressBook - SwiftArchitect
框架未嵌入您的应用程序。您对PodErrorKit做得很好,但错过了SwiftAddressBook。 - keithyip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接