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

时间:2015-10-06 12:16:07

标签: cocoapods swift2 realm

我使用realm.io作为某些数据的存储空间。我想与今天的分机共享此数据。我正在使用CocoaPods,我想知道如何与两个目标共享该框架。我的podfile如下所示:

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

2 个答案:

答案 0 :(得分:1)

您的Podfile看起来是正确的,可以在干净的安装上运行。但是,当您在不同的设置之间进行迁移时,您发现CocoaPods中的用户项目集成存在错误。

背景信息

如果未在Podfile中明确指定目标,则CocoaPods将与项目中的第一个目标集成。这是你的应用目标,只要它是唯一的,它就能正常工作。

但是现在你明确地引用了目标。 CocoaPods将创建单独的所谓聚合目标。这些内容位于Pods.xcodeproj,名为Pods-AppPods-AppToday。这些是静态框架目标(来自0.39.beta.5),它们与您的目标相关联,以帮助Xcode在Pods项目中找到您的依赖项。因为CocoaPods在运行pod install时并不知道有关前一个Podfile的任何信息(并且它不会在Podfile.lock中保留此信息),所以它不会删除旧的聚合目标,该目标已命名只需Pods,它就是您的应用目标中的产品参考。

解决问题

  • 在文件导航器中的Xcode中选择项目文件
  • 从目标列表
  • 左侧窗格中选择您的应用目标
  • 转到常规标签
  • 关联的框架和库窗格
  • 中删除Pods.framework

之前的预期状态

Both aggregate target products: the old to remove and the new to keep

它应该是什么样子

Just the new aggregate target product

答案 1 :(得分:0)

platform :ios, '8.0'
use_frameworks!

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

添加此行

link_with 'App', 'AppToday'