我被困住了!我无法让它发挥作用。
这是我打算做的: 我在.txt文件中有一些数据,我最终想用NSArray填充! 这就是我所做的:
NSString *urlString = [[NSBundle mainBundle] pathForResource:@"intsAndsStrings" ofType:@"txt"];
NSArray *objectsArray = [[NSArray alloc]initWithContentsOfFile:urlString];
NSLog(@"objectsArray is: %@", objectsArray);
我从最后一行得到的唯一输出是
objectsArray is: (null)
txtFile中的对象用逗号(,)分隔。
请帮助我!
答案 0 :(得分:5)
您发布的代码要求该文件为plist类型文件,其array
为根元素。如果您的txt
文件只是一个普通的旧文本文件,并且您希望将每行文本放入数组中,那么您需要采用完全不同的方法。
一种选择是将文本文件加载到NSString
变量中,然后使用componentsSeparatedByCharactersInSet:
传递newlineCharacterSet
将字符串拆分为数组。
NSString *urlString = [[NSBundle mainBundle] pathForResource:@"intsAndsStrings" ofType:@"txt"];
NSString *rawText = [NSString stringWithContentsOfFile:urlString encoding:NSUTF8StringEncoding error:nil];
NSArray *objectsArray = [rawText componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
真实代码将正确处理错误。
编辑:我刚注意到您声明文本文件是CSV文件。这需要更多的处理。 CSV文件是否有多行?如何存储每行的每个值?
答案 1 :(得分:2)
要使用initWithContentsOfFile:
,您的文件必须采用属性列表格式,而不是逗号分隔格式。查看“属性列表编程指南”。
答案 2 :(得分:1)
正如我从您使用的扩展程序中看到的那样,这可能不是plist文件。
您应该使用包含数组的plist文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>hello</string>
</array>
</plist>
答案 3 :(得分:1)
使用CHCSVParser
。给它一个你的文件的路径,它会给你一大堆NSStrings。
NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"csv"];
NSError *error = nil;
NSArray *rows = [NSArray arrayWithContentsOfCSVFile:path encoding:NSUTF8StringEncoding error:&error];
if (rows == nil) {
//something went wrong; log the error and exit
NSLog(@"error parsing file: %@", error);
return;
}
此时,行是一个数组。行中的每个元素本身都是一个表示CSV文件中单行的数组。并且该数组的每个元素都是NSString。