【问题标题】:Using Realm Framework in Today extension (CocoaPods)在 Today 扩展中使用 Realm 框架(CocoaPods)
【发布时间】:2015-10-06 12:16:07
【问题描述】:

我正在使用 realm.io 作为一些数据的存储。我想与我的 Today 扩展分享这些数据。我正在使用 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

我做错了什么?

感谢任何帮助。

品牌

【问题讨论】:

    标签: cocoapods swift2 realm


    【解决方案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 的文件导航器中选择您的项目文件
    • 从目标列表的左窗格中选择您的应用目标
    • 转到常规标签
    • Linked Frameworks and Libraries窗格中删除Pods.framework

    之前的预期状态

    它应该是什么样子

    【讨论】:

    • 太好了,解决了我所有的问题!感谢您的良好解释和指导。非常感谢!
    【解决方案2】:
    platform :ios, '8.0'
    use_frameworks!
    
    pod 'RealmSwift'
    pod 'MBProgressHUD'
    pod 'Alamofire'
    

    添加这一行

    link_with 'App', 'AppToday'
    

    【讨论】:

    • 谢谢,我会试一试的。这是否包括两个目标的所有框架?我的 Today-extension 中不需要 MBProgressHUD。
    • 是的,它用于共享同一个 pod。但我认为它会帮助你在模拟器中进行测试
    猜你喜欢
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多