从NSBundle获取文件路径,该NSBundle不是mainBundle

时间:2015-07-08 10:38:15

标签: ios swift nsbundle

我试图为pathForResource文件获取plist,当文件在mainBundle中时很容易,我用过:

let path = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist")

但现在我将settings文件移到另一个包中,我不知道如何获取它。我尝试使用forClassallBundles,但我是一个快速的新手并没有设法让它发挥作用。也无法通过网络找到解决方案。似乎所有NSBundle用法示例仅适用于mainBundle

1 个答案:

答案 0 :(得分:2)

如果你不知道哪个包有你的资源,你可以循环遍历所有这些包:

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
    }
}

另一方面,如果您拥有捆绑的pathidentifier,则可以使用:

let bundle = NSBundle(path: "the-bundle-path")

or

let bundle = NSBundle(identifier: "bundle-identifier")

这与您的Swift编程知识水平无关,而是与接口NSBundle公开。您应该检查docs,看看他们是否可以帮助您。