Cocoa-Touch - 将文本文件加载到数组中

时间:2010-07-21 00:47:31

标签: objective-c cocoa debugging

我的代码有什么问题..我想让它读取像

这样的文本文件

的Item1

项目2

项目3

项目4

项目5

并将其解析为一个数组,因此每一行都是这样数组中的一个单独对象。

当您检查控制台时,它会打印(null)

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

我把txt文件放在我的项目中并将其复制到目的地。

1 个答案:

答案 0 :(得分: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];