在 Today 扩展中使用 Realm Framework (CocoaPods)

Using Realm Framework in Today extension (CocoaPods)

我正在使用 realm.io 作为一些数据的存储。我想与我的 Today 扩展共享这些数据。我正在使用 CocoaPods,我想知道如何与两个目标共享该框架。我的播客文件如下所示:

platform :ios, '8.0'
use_frameworks!

pod 'RealmSwift'
pod 'MBProgressHUD'
pod 'Alamofire'

我试过这个,它在构建到设备时有效,但在构建到 iOS 模拟器时无效。它返回错误 'ld: framework not found Pods':

platform :ios, '8.0'
use_frameworks!

def shared_pods
   pod 'RealmSwift'
   pod 'Alamofire'
end

target 'App' do
    shared_pods
    pod 'MBProgressHUD'
end

target 'AppToday' do
    shared_pods
end

我做错了什么?

感谢任何帮助。

Brgds

platform :ios, '8.0'
use_frameworks!

pod 'RealmSwift'
pod 'MBProgressHUD'
pod 'Alamofire'

添加这一行

link_with 'App', 'AppToday'

您的 Podfile 看起来是正确的,可以在全新安装中运行。但是在不同设置之间迁移时,您在 CocoaPods 中的用户项目集成中发现了一个错误。

背景资料

如果您没有在 Podfile 中明确指定目标,那么 CocoaPods 将与您项目中的第一个目标集成。这是您的应用程序目标,只要它是唯一一个就可以正常工作。

但现在您正在明确引用目标。 CocoaPods 将创建单独的所谓聚合目标。这些在 Pods.xcodeproj 中并命名为 Pods-AppPods-AppToday。这些是静态框架目标(来自 0.39.beta.5),它们与您的目标链接较弱,可帮助 Xcode 在 Pods 项目中找到您的依赖项。因为当你 运行 pod install 时,CocoaPods 对之前的 Podfile 一无所知(并且它不会在 Podfile.lock 中保留此信息),它不会删除旧的聚合目标,该目标仅命名为 Pods,它是您应用目标中的产品参考。

解决问题

  • Select 您的项目文件在文件导航器Xcode 中
  • Select 目标列表左侧窗格中的应用目标
  • 转到常规 选项卡
  • Linked Frameworks and Libraries 窗格中删除 Pods.framework

之前的预期状态

它应该是什么样子