使用[NSBundle mainBundle] pathForResource:ofType:inDirectory访问文件:

时间:2011-06-07 09:33:53

标签: objective-c ios xcode filepath nsbundle

我在名为paylines.txt的文件夹中添加了一个文件TextFiles,该文件位于Xcode中我的iOS项目的Resources文件夹中。

这是我用来访问该文件的代码:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"paylines" ofType:@"txt" inDirectory:@"TextFiles"];
NSLog(@"\n\nthe string %@",filePath);

代码打印:

2011-06-07 14:47:16.251 slots2[708:207] 

the string  (null)

10 个答案:

答案 0 :(得分:163)

我也有同样的问题。 我发现的解决方案是(在xcode 4.x中):

转到:目标 - > “构建阶段” - > “复制捆绑资源” 然后在此处添加该特定文件。 如果已添加该文件,请将其删除并重新添加。

清理项目并运行。它有效。:)

答案 1 :(得分:10)

我发现了我提交的错误我正在为项目添加一个组,而不是为更多instructions添加真实目录

答案 2 :(得分:10)

试试这个,它对我有用。

NSString *str = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"paylines.txt"];  

对于模拟器

NSURL *rtfUrl = [[NSBundle mainBundle] URLForResource:@"paylines" withExtension:@".txt"];

答案 3 :(得分:10)

当我拖入文件时,"添加到目标"默认情况下,框似乎未被勾选。如果我不勾选它,那么我就会遇到问题。通过删除文件然后将其拖回来修复它,但确保勾选"添加到目标"。 enter image description here

答案 4 :(得分:3)

您是否尝试在XCTest内部执行此操作并濒临破坏笔记本电脑?这是您的主题:Why can't code inside unit tests find bundle resources?

答案 5 :(得分:3)

您需要做的就是确保选中下面显示的复选框。

enter image description here

答案 6 :(得分:1)

转到“目标” - > “Build Phases”,选择目标,选择“Build Phases”选项卡,单击“Add Build Phase”,然后选择“Add Copy Files”。将目标更改为“产品目录”。将文件拖到“添加文件”部分。

答案 7 :(得分:1)

对于Mac OSX,

转到目标 - >建立阶段 单击+以复制新文件构建阶段 选择产品目录并将文件放在那里。

清理并运行项目。

答案 8 :(得分:1)

在关注了@Neelam Verma的回答或@ dawid的答案后,其结果与@Neelam Verma的答案相同,不同之处在于@ dawid的答案始于将文件拖放到Xcode项目中并且@Neelam Verma的回答从一个已经属于Xcode项目的文件开始,我仍然无法找到NSBundle.mainBundle().pathForResource("file-title", ofType:"type")来查找我的视频文件。

我想也许是因为我的文件是在Xcode项目中嵌套的组中,这是原因,所以我将视频文件移动到我的Xcode项目的根目录,仍然没有运气,这是我的代码:< / p>

 guard let path = NSBundle.mainBundle().pathForResource("testVid1", ofType:"mp4") else {
        print("Invalid video path")
        return
    }

最初,这是我的文件的名称:testVid1.MP4,将视频文件重命名为testVid1.mp4修复了我的问题,因此,至少ofType字符串参数区分大小写。

答案 9 :(得分:0)

选择项目/特定文件夹 - &gt;右键单击 - &gt;将文件添加到项目 - &gt;选择要添加的文件。

这对我有用。