cocoapods:资源不会复制到 mainBundle

Posted

技术标签:

【中文标题】cocoapods:资源不会复制到 mainBundle【英文标题】:cocoapods: The resources are not copied to mainBundle 【发布时间】:2014-04-18 12:57:07 【问题描述】:

我正在为资源而苦苦挣扎。我希望能够在我的 pod 中放置一个 nib。其中一个类使用这个nib

这是 podspec:

Pod::Spec.new do |s|

  s.name         = "MyCBD_BSManagedDocument"

  s.requires_arc = true
  s.osx.platform   = :osx, '10.7'

  s.subspec 'MyCBD_BSManagedDocument' do |ss|
    ss.source_files = 'Classes/MyCBD_BSManagedDocument/**/*.h,m'
  end

  s.subspec 'Auxiliary classes' do |ss|

    ss.subspec 'MyCBDLockManager' do |sss|
      sss.source_files = 'Classes/Auxiliary classes/MyCBDLockManager/**/*.h,m'
      sss.resource_bundle = 'MyCBDLockManager' => 'Classes/Auxiliary classes/MyCBDLockManager/MyCBDLockManager.xib'
    end

    ss.subspec 'MyCBDSafeguardManager' do |sss|
      sss.source_files = 'Classes/Auxiliary classes/MyCBDSafeguardManager/**/*.h,m'
    end
  end

end

很奇怪,在我的玩具项目中测试 pod,它可以工作(我可以检查 nib 是否在 mainBundle 中),但在我的实际项目中,笔尖不在 mainBundle 中,我有错误

-[MyCBDLockManager loadWindow]: failed to load window nib file 'MyCBDLockManager'.

关于如何在可可豆荚中包含资源有什么建议吗?

【问题讨论】:

【参考方案1】:

由于某种原因,缺少构建阶段中的一个阶段。不过,我不知道为什么。 所以,我不得不用pod install 再次添加这个阶段。

【讨论】:

我遇到了同样的问题,pod install 没有解决这个问题。直到我注意到所有必需的构建阶段都存在于测试目标中。问题是自从 Cocoa Pods 1.0 以来发生了一些变化。核心问题是现在需要指定明确的真实目标,否则它将选择第一个(在我的情况下,它以某种方式是测试目标)。更多详情见blog.cocoapods.org/CocoaPods-1.0-Migration-Guide【参考方案2】:

如果缺少该阶段,您应该尝试再次运行 pod install 并确保您正在打开生成的 xcworkspace。此外,您只需要 resources 而不是 resource_bundles 来获得像这样的单个 xib

【讨论】:

感谢您的回答。我实际上又做了一次pod install,但它不起作用。 您可以自己重新制作构建阶段,如屏幕截图所示。 是的,我就是这么做的。但我仍然想知道为什么它不在这里! 您可以关注these instructions,然后再关注pod install

以上是关于cocoapods:资源不会复制到 mainBundle的主要内容,如果未能解决你的问题,请参考以下文章

ios:对本地资源文件的编辑不会被复制到设备

Cocoa - 从非主包加载资源

设置 UIAppearance 不会影响 cocoapod UI 组件

从零开始,让你的框架支持CocoaPods

FirebaseFirestoreSwift 不会安装(CocoaPods)

使用cocoapods