我无法从应用程序的Bundle

时间:2016-04-12 17:47:51

标签: swift file text bundle nsfilemanager

我曾经使用以下代码从我的应用程序包中读取文本文件。但是,无论我的应用程序无法再找到它们。我100%确定我的所有文件都在Assets.xcassets中,我可以看到它们,编辑它们,将它们从一个目录转换到另一个目录。但是我的应用程序不想阅读它们,请告诉我我错过了什么!!

这是我正在使用的程序......

func readBundle(file:String) -> String
{
    var res: String = ""
    if let path = NSBundle.mainBundle().pathForResource(file, ofType: "txt")
    {
        let fm = NSFileManager()
        let exists = fm.fileExistsAtPath(path)
        if(exists)
        {
            let c = fm.contentsAtPath(path)
            res = NSString(data: c!, encoding: NSUTF8StringEncoding) as! String
        }
    }
    return res
}

我正在使用它:

let res = readBundle("test")
print(res)

2 个答案:

答案 0 :(得分:3)

在另一个选项中,然后'XCAssets'您可以创建一个单独的文件夹/资源组而不是项目结构中的图像,检查它们是否存在于项目主体的构建阶段部分的Copy Bundle Resource中目标

如果您添加这样的资源,您当前的代码应该可以正常工作

func readBundle(file:String) -> String
{
    var res: String = ""
    if let path = NSBundle.mainBundle().pathForResource(file, ofType: "txt")
    {
       //you should be able to get the path
       //other code as you has written in the question
    }
    return res
}

答案 1 :(得分:2)

在XCAssets中存储非图像文件时,应使用NSDataAsset来处理其内容

https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSDataAsset_Class/

func readBundle(file:String) -> String
{
    var res = ""
    if let asset = NSDataAsset(name: file) ,
        string = String(data:asset.data, encoding: NSUTF8StringEncoding){
        res = string
    }
    return res
}