2010-07-21 84 views
6

請告訴我錯我的代碼。我希望它讀取文本文件中像可可觸摸 - 加載文本文件到一個數組

項目1

項目2

項目3

項目4

第5項

並將其解析爲一個數組,所以每一行都是一個se在陣列中分隔對象。

當您檢查控制檯它打印(null)

-(void)parseIntoArray{ //parse the files into seprate arrays. 
    allPools = [[NSMutableArray alloc] initWithContentsOfFile:@"ALL_POOLS_NAMES"]; 
    NSLog(@"%@",allPools); 
} 

我把txt文件在我的項目,並將其複製到目的地。

回答

13

首先,您可以驗證文件是否存在您正在查找的位置並且可讀? 使用

[[NSFileManager defaultManager] isReadableFileAtPath:aPath]; 

其次,你的文件是什麼。 initWithContentsOfFile的行爲:

通過aPath 標識必須僅包含屬性列表中的文件中的數組表示對象(的NSString,NSData的,NSArray中,或NSDictionary的對象)。

您的文件是一個有效的plist xml文件嗎?

InResponse

您不能使用NSArray的構造initWithContentsOfFile:解析一個普通的文本文件。

相反,您可以將文件內容讀入內存,並將它自己解析爲數組。對於你的例子,你可以使用

//pull the content from the file into memory 
NSData* data = [NSData dataWithContentsOfFile:aPath]; 
//convert the bytes from the file into a string 
NSString* string = [[[NSString alloc] initWithBytes:[data bytes] 
              length:[data length] 
              encoding:NSUTF8StringEncoding] autorelease]; 

//split the string around newline characters to create an array 
NSString* delimiter = @"\n"; 
NSArray* items = [string componentsSeparatedByString:delimiter]; 
+0

編輯OP使其更清晰。 – user377419 2010-07-21 01:42:34

+0

嗯,我有一個錯誤..'編碼:NSUTF8StringEncoding]];'它說它缺少一個':''''' 你是否缺少一個參數? – user377419 2010-07-21 11:52:28

+1

@ shorty876:不,他有一個太多的[字符在開頭。 – JeremyP 2010-07-21 12:27:06