从XCode Bundle读取文本文件

时间:2012-10-21 06:53:22

标签: objective-c xcode macos file bundle

为什么我不能阅读foo.rtf的内容?我已经把它放在XCode包中了。 fileRoot仍然包含null。

NSString* filePath = @"foo";
NSString* fileRoot = [[NSBundle mainBundle] pathForResource:filePath ofType:@"rtf"];       

NSLog(@"File root contains %@", fileRoot);

感谢任何人的帮助。


@TheAmateurProgrammer,谢谢你的图表。我刚刚将foo.rtf添加到了bundle资源中。 fileRoot的结果仍为null。我还缺什么步骤?

Build Phases中Target的“Copy Bundle Resources”现在包含foo.rtf。 (我不能插入图片,因为我还是新手)。

(在我可以正确指出fileRoot之后,我会添加内容读数。)

2 个答案:

答案 0 :(得分:8)

您添加了该文件,但它是否真的已复制到您的应用程序包中?

http://f.cl.ly/items/1d3y2d3b101C0g07462N/Screen%20Shot%202012-10-21%20at%203.08.44%20PM.png

确保您的rtf文件已复制到您的资源中。

其次,你只得到rtf的路径,而不是rtf的内容。

NSString *fileRoot = [[NSBundle mainBundle] pathForResource:filePath ofType:@"rtf"]; 
NSString *contents = [[[NSAttributedString alloc] initWithRTF:[NSData dataWithContentsOfFile:fileRoot] documentAttributes:NULL] string];

这将获得rtf的内容。

答案 1 :(得分:0)

首先检查您的文件是否存在于包中,如果存在,则必须与“foo.rtf”具有相同的名称。

由于您的文件不在包中直接存在,因此您将获得nil。

一旦获得正确的文件路径,就可以通过在NSString类上调用initWithContentsOfFile方法将文本文件的内容作为字符串获取。