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 个新目标:MyName
和 MyNameBundle-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
都在启动时加载,此代码触发了所需包的加载。
我正在用一些资源文件创建我自己的 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 个新目标:MyName
和 MyNameBundle-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
都在启动时加载,此代码触发了所需包的加载。