从非 mainBundle 的 NSBundle 获取文件路径
Get file path from a NSBundle which is not the mainBundle
我正在尝试为 plist
文件获取 pathForResource
,当文件在 mainBundle 中时很容易,我使用了:
let path = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist")
但现在我将 settings
文件移到了另一个包中,但我不知道如何获取它。我尝试使用 forClass
和 allBundles
,但我是一个 swift 菜鸟,没能成功。也无法通过网络找到解决方案。似乎所有 NSBundle
用法示例仅适用于 mainBundle
如果您不知道哪个包有您的资源,您可以遍历所有资源:
let bundles = NSBundle.allBundles()
var path : String?
var myBundle : NSBundle?
for bundle in bundles {
if let resourcePath = (bundle as! NSBundle).pathForResource("Settings", ofType: "plist") {
path = resourcePath
myBundle = bundle
break
}
}
另一方面,如果您的捆绑包有 path
或 identifier
,您可以使用:
let bundle = NSBundle(path: "the-bundle-path")
or
let bundle = NSBundle(identifier: "bundle-identifier")
这与您的 Swift 编程知识水平无关,而与 NSBundle
公开的接口有关。您应该检查 docs 看看他们是否可以帮助您。
我正在尝试为 plist
文件获取 pathForResource
,当文件在 mainBundle 中时很容易,我使用了:
let path = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist")
但现在我将 settings
文件移到了另一个包中,但我不知道如何获取它。我尝试使用 forClass
和 allBundles
,但我是一个 swift 菜鸟,没能成功。也无法通过网络找到解决方案。似乎所有 NSBundle
用法示例仅适用于 mainBundle
如果您不知道哪个包有您的资源,您可以遍历所有资源:
let bundles = NSBundle.allBundles()
var path : String?
var myBundle : NSBundle?
for bundle in bundles {
if let resourcePath = (bundle as! NSBundle).pathForResource("Settings", ofType: "plist") {
path = resourcePath
myBundle = bundle
break
}
}
另一方面,如果您的捆绑包有 path
或 identifier
,您可以使用:
let bundle = NSBundle(path: "the-bundle-path")
or
let bundle = NSBundle(identifier: "bundle-identifier")
这与您的 Swift 编程知识水平无关,而与 NSBundle
公开的接口有关。您应该检查 docs 看看他们是否可以帮助您。