Cocoapod 捆绑包在我的应用程序中不可用

Cocoapod bundle not available in my app

我正在用一些资源文件创建我自己的 pod。它基本上是这样定义的:

Pod::Spec.new do |s|
s.name         = 'MyName'
s.version      = '0.0.1'
s.license      =  { :type => 'MIT' }
s.homepage     = 'not important'
s.authors      = {
    # authors
}
s.summary      = '…'

# Source Info
s.source       =  {
    # .. my sources
}
s.source_files = ['Sources/*.swift']

s.resource_bundle = {'MyNameBundle' => ['*.{storyboard,xib,png,jsbundle,meta}']}

s.ios.deployment_target = '9.0'

s.requires_arc = true

结束

pod 是用 pod install 安装的,我可以看到资源文件在 MyName/Resources/ 中可用。到目前为止一切顺利。

我什至可以在我的 Pods.pbxcodeproj 中看到有 2 个新目标:MyNameMyNameBundle-Bundle

但问题是,当我尝试列出所有可用的包时:

        NSBundle.allBundles().forEach { 
           print("bundle identifier: \([=11=].bundleIdentifier) - path \([=11=].bundlePath)") 
        }

然后就不显示了

我错过了什么?

好吧,这是一个答案,但我无法真正解释它是如何工作的。如果有人有任何想法,请告诉我。

这个post对我帮助很大

所以在我的 Pod 中,我必须添加一个空的 swift class 以便它可以用于加载正确的 NSBundle

let refreshBundle = NSBundle(forClass: MyEmptyClass.self)
    let bundleURL = newBundle.resourceURL?.URLByAppendingPathComponent("MyBundle.bundle")

    let bundle = NSBundle(URL: bundleURL!)!

似乎并非所有 NSBundle 都在启动时加载,此代码触发了所需包的加载。