2011-04-12 72 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

相關問題