2011-04-12 71 views
0

我在做什么:iPhone:从文件读取一个字符串返回错误的结果

我读一些数据,关闭文件几次,而我的应用程序运行。我使用下面的代码可以这样做:

NSString *dataPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"data.txt"]; 
NSString *data = [NSString stringWithContentsOfFile:dataPath encoding:NSStringEncodingConversionExternalRepresentation error:NULL]; 
NSArray *components = [data componentsSeparatedByString:@"|||||"]; 

第一次这样叫,它按预期工作 - 我得到长度为5的数组,其中包含相关的字符串中的每个部分。

错在:

该文件不会被修改。但是,当我第二次(或第三,第四等)调用相同的过程时,我得不到相同的结果。而是返回一个长度为1的数组,其中只包含部分必要数据。

为什么?我看不出有任何理由让这个出错......任何帮助都非常感谢!

+0

更改您的名字,您毁了我的代表 – Jordan 2011-04-12 08:31:04

回答

0

原来,代码工作正常。问题出在我的代码中的其他地方,我曾经(偶然)访问过受保护的目录。因此,iOS阻止我的应用程序访问任何文件:

0

由于文件在AppBundle中,这意味着您根本无法修改此文件。 您确定在调用此代码的情况下,autorelease对象是否保持正确?

如果您每次需要此数据时都调用此代码块,则可能会想到首次保存结果并每次使用该结果。这会加快一点。

+0

确实,这样做不太合理,但因为包含对象是发布在文件阅读之间 - 而且该文件不是那么大。当我回家时,我会看看保留和发布等:) – 2011-04-12 07:58:23

相关问题