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

问题描述 投票:41回答:10

我在名为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)
objective-c ios xcode filepath nsbundle
10个回答
163
投票

我也遇到了同样的问题。我找到的解决方案是(在xcode 4.x中):

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

清理项目并运行。有用。 :)


0
投票

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

这对我有用。


10
投票

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


10
投票

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


10
投票

试试这个,它对我有用。

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

对于模拟器

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

3
投票

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


3
投票

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

enter image description here


1
投票

转到“目标” - >“构建阶段”,选择目标,选择“构建阶段”选项卡,单击“添加构建阶段”,然后选择“添加复制文件”。将目标更改为“产品目录”。将文件拖到“添加文件”部分。


1
投票

如果是Mac OSX,

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

清理并运行项目。


1
投票

按照@Neelam Verma的回答或@ dawid的答案,其结果与@Neelam Verma的答案相同,不同之处在于,@ dawid的答案始于将文件拖放到Xcode项目中,而@Neelam Verma的答案始于文件已经是Xcode项目的一部分,我仍然无法让NSBundle.mainBundle().pathForResource("file-title", ofType:"type")找到我的视频文件。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.