2012-10-21 62 views
3

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

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

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

欣赏任何人的帮助。


@TheAmateurProgrammer,谢谢你的图。我只是将foo.rtf添加到捆绑资源中。 fileRoot的结果仍然为空。我还缺少什么步骤?

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

(我会添加内容阅读后,我可以得到fileRoot指向正确)。

+0

你可以显示你的代码实际上做了什么来创建文件路径吗?我确定它不是富。 –

回答

0

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

你得到零,因为你的文件不是直接存在于包中。

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

+0

谢谢你,kidsid49,这就是我错过的。我现在已经完成了这一步,但仍然没有指针。 – zakton

+0

确保您已将该文本文件添加到当前目标。您可以通过单击该文本文件来确认,然后检查它是否已添加到当前目标。必须检查左侧检查器中的复选框以查看当前目标。 – kidsid49

+0

是的,检查员下的目标成员已经打勾(在项目名称的左侧)。 fileRoot的指针仍然是零。 :( – zakton

7

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

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的内容。

+0

我不仅投票你的答案,因为它帮助了我,但也因为你的真棒昵称 –