首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSBundle.mainBundle().pathForResource返回零

NSBundle.mainBundle().pathForResource返回零
EN

Stack Overflow用户
提问于 2015-07-06 04:57:48
回答 7查看 49.4K关注 0票数 36

我试图为Swift编写一个简单的IO包装器。

为了测试这一点,我在我的项目根目录中有一个名为"Test.txt“的文件。

我添加了这个文件以在Bundle参考资料中构建阶段,正如其他有此问题的人所建议的那样。

我实现了一个非常简单的file类,其中包含一个read函数,目的是输出文件的内容。

代码语言:javascript
复制
class File2{
    let resourceName: String
    let type: String
    let bundle = NSBundle.mainBundle()


    init(resourceName: String, type: String = "txt"){
        self.resourceName = resourceName
        self.type = type
        println(self.bundle)
    }

    func read(){
        let path = self.bundle.pathForResource("Test.txt", ofType: "txt") //Hard coded these in just to make sure Strings contained no whitespace
        println(path) //This returns nil...why?
        var error:NSError?
        //print(String(contentsOfFile:path!, encoding:NSUTF8StringEncoding, error: &error)!)
        //return String(contentsOfFile:path!, encoding:NSUTF8StringEncoding, error: &error)!
    }
}

当我打印包的内容时,我得到一个URI到我的文件系统上的特定位置,我假设它是模拟器中应用程序的虚拟位置。导航到它会发现它确实包含我的"Test.txt“文件。

现在我要做的就是找到那个文件的路径。

我这样做是通过调用:self.bundle.pathForResource("Test.txt", ofType: "txt")

返回“零”。

为什么?:)

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-07-06 05:02:24

不要将.txt包含在name参数中,将其作为扩展参数传递。

来自documentation

扩展 要定位的文件的文件扩展名。 如果指定空字符串或零,则假定扩展名不存在,并且该文件是遇到的第一个与名称完全匹配的文件。

Swift3

代码语言:javascript
复制
let bundle = Bundle.main
let path = bundle.path(forResource: "Test", ofType: "txt")

Swift1 & Swift2

代码语言:javascript
复制
let bundle = NSBundle.mainBundle()
let path = self.bundle.pathForResource("Test", ofType: "txt")

Objective-C

代码语言:javascript
复制
NSBundle* bundle = [NSBundle mainBundle];
NSString* path = [bundle pathForResource:@"Test" ofType:@"txt"];
票数 67
EN

Stack Overflow用户

发布于 2016-09-21 13:49:06

在斯威夫特3.0中,用

代码语言:javascript
复制
let path = Bundle.main.path(forResource: "Test", ofType: "txt")
票数 18
EN

Stack Overflow用户

发布于 2015-07-06 05:13:10

替换你的

代码语言:javascript
复制
 let path = self.bundle.pathForResource("Test.txt", ofType: "txt") 

使用

代码语言:javascript
复制
let path = NSBundle.mainBundle().pathForResource("Test", ofType: "txt") 
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31238031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档