2012-09-06 183 views
2

我有一个由多个单词组成的文本文件。它们全部由新行隔开。从文本文件中读取objective-c

什么香港专业教育学院的尝试:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"txt"]; 

if (filePath) { // This does trigger, so the file is actually found. 

    NSArray *arr = [filePath componentsSeparatedByString:@"\n"]; 

} 

什么香港专业教育学院也尝试:

NSMutableArray * lines = [[NSMutableArray alloc] initWithArray:[filePath componentsSeparatedByString:@"\n"] copyItems: YES]; 

这些都不似乎工作,我只是似乎得到的文件路径,当我使用的NSLog读出线条。你们能帮忙吗?

行数组似乎只包含一个对象,即文本文件位置的字符串。

我想要一个数组,其中每个字符串是一个由纺织品中的一行分隔的字符串。

回答

12

首先,你需要在你的应用程序包中获取文件。这意味着,您必须将其放入应用程序的“资源”文件夹中。

然后,你可以这样阅读:

NSString* path = [[NSBundle mainBundle] pathForResource:@"filename" 
               ofType:@"txt"]; 

然后加载内容为NSString更容易:

NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:NULL]; 

然后创建数组:

NSArray *arr = [content componentsSeparatedByString:@"\n"]; //might also be @"\r" check both. 
+0

你忘了添加按行分隔,但我自己做了。现在完美运作。谢谢! –

+0

请你纠正我的答案,以便它可以帮助别人也......谢谢... –

+0

OFc,SO只是不会让你接受一个快速的答案。 –

1

你在那里做的所有事情都是盗用你的文件路径 - 你还没有从文件中加载任何数据。

很多方法可以做到这一点。 [NSData initWithContentsOfURL...可能是一个开始

1

的方法[NSString componentsSeparatedByString:]在字符串本身上使用,这就是你的情况f文件路径,而不是此路径中文件的内容。

有很多方法可以从文件中读取。 Dave DeLong针对这个问题发布了一个聪明的方法。检查它here

0

的NSString * stringFileContent = [NSString的stringWithContentsOfFile:[[一个NSBundle mainBundle] pathForResource:@ “yourfilename” ofType:@ “TXT”]编码:NSUTF8StringEncoding错误:&错误];

+0

欢迎来到堆栈溢出!这并不能解答这个问题。一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你将能够[评论任何职位](http://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 – ddb