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

43

我在Xcode的iOS项目中的Resources文件夹中创建了一个名为TextFiles的文件夹,并在其中添加了一个名为paylines.txt的文件。

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

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个回答

167

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

进入:目标 -> “构建阶段”->“复制包资源” 然后在此处添加该特定文件。 如果已添加该文件,请先删除再重新添加。

清理项目并运行。它会起作用。 :)


1
对我来说,文件在那里,所以我将其删除并重新添加,清理后它就可以工作了! - Joseph DeCarlo
在我的情况下,我的应用程序的“添加到目标”复选框不知何故被取消了勾选;直到我删除文件并再次添加它时才意识到。糟糕! - geerlingguy
3
强调他人的评论和类似答案:有时即使你做得正确但仍然无效。如果是这样,请确保从项目窗格中的“BuildPhases/Bundle Resources”中删除文件,然后重新添加它。然后选择“项目”>“清理”。这对我最终起了作用! - Tim Erickson
1
是的,还不得不将其删除并重新添加才能使其正常工作。谢谢。 - jac300

10
当我拖入文件时,"添加到目标"框似乎默认未被选中。如果我将其保持未选中,则会遇到所描述的问题。通过删除文件然后重新将它们拖回来,并确保勾选"添加到目标"来修复它。 在此输入图片描述

10

好的,我发现了我的错误,我添加了一个组到项目中,而不是添加真实的目录。要获取更多说明


1
是的,就像链接中所说的那样:在弹出窗口中,请确保选择“为添加的任何文件夹创建文件夹引用”,而不是“为添加的任何文件夹创建组”。 - AlvaroSantisteban

10

试一试,这对我有效。

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

模拟器使用

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

4

您只需要确保以下所示复选框已被选中。

enter image description here


3

1

对于Mac OSX:

前往目标 -> 构建阶段 点击 + 复制新文件构建阶段 选择产品目录并将文件放入其中。

清理并运行项目。


1

前往“Target”->“Build Phases”,选择您的目标,选择“Build Phases”选项卡,点击“添加Build Phase”,然后选择“添加Copy Files”。将目的地更改为“产品目录”。将您的文件拖到“添加文件”部分中。


如果您能告诉我为什么这个文件被从复制文件列表中删除,我会非常感激。 - Lena Bru

1
在按照@Neelam Verma的答案或者@dawid的答案之后,两种方法都能达到相同的结果,区别在于@dawid的答案是从将文件拖放到Xcode项目开始,而@Neelam Verma的答案则是从已经成为Xcode项目一部分的文件开始。但我仍然无法使用NSBundle.mainBundle().pathForResource("file-title", ofType:"type")找到我的视频文件。
我认为这可能是因为我的文件在Xcode项目中的一个嵌套组中,所以我把视频文件移到了Xcode项目的根目录下,但仍然没有成功,这是我的代码:
 guard let path = NSBundle.mainBundle().pathForResource("testVid1", ofType:"mp4") else {
        print("Invalid video path")
        return
    }

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

0
选择项目/特定文件夹 --> 右键单击 --> 添加文件到项目 --> 选择要添加的文件。
这对我有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接