使用.txt文件填充此数组的最佳方法?

时间:2011-07-14 16:54:48

标签: arrays cocoa

我正在寻找使用单词填充的SEVERAL数组。最终我希望能够从数组中拉出一个随机单词并显示它(我已经掌握了它)。我想知道的是填充这个数组的最佳方法是什么。我应该输入:

[NSArray arrayWithObjects:@"word1",@"word2",@"word3",@"word4",@"word5",nil]

还是有更好的方法将单词存储在.txt文件中,我可以将循环文本文件中的每个单词添加到数组中吗?

我正在考虑用100个单词填充数组。任何和所有的帮助表示赞赏:D。

更新

经过一些研究后我发现了这个here。这似乎正是我想要的。唯一的问题是它给了我一个警告

  

'stringWithContentsOfFile'已弃用

我知道完整的NSString方法是:

stringWithContentsOfFile:(NSString *) encoding:(NSStringEncoding) error:(NSError **)

但是我不知道要为编码添加什么(我假设我可以为NSError添加'nil')。除此之外,它就像一个魅力。我可能会考虑从路径切换到网址。这是我找到的代码:

- (NSArray *) readFile:(NSString *) path {


NSString *file = [NSString stringWithContentsOfFile:path];

NSMutableArray *dict = [[NSMutableArray alloc] init];
NSCharacterSet *cs = [NSCharacterSet newlineCharacterSet];
NSScanner *scanner = [NSScanner scannerWithString:file];

NSString *line;
while(![scanner isAtEnd]) {
    if([scanner scanUpToCharactersFromSet:cs intoString:&line]) {
        NSString *copy = [NSString stringWithString:line];
        [dict addObject:copy];

    }
}
NSArray *newArray = [[NSArray alloc] initWithArray:dict];

return newArray;
}

2 个答案:

答案 0 :(得分:0)

获取单词列表的代码方式越少:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Words" ofType:@"plist"];
    NSArray *words = [[NSArray alloc] initWithContentsOfFile:path];

然后你只需创建一个包含所有单词的plist,并将根对象作为数组。

在你正在寻找的编码上面的方法是NSUTF8StringEncoding,你实际上应该通过引用传递一个NSError,如果出现错误,错误可能会有用:

NSError *anError = nil;
NSString *file = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&anError];

答案 1 :(得分:0)

您可以使用NSUTF8StringEncoding作为encoding参数(取决于您创建文件的方式,但这是最常见的)。

您也可以使用NSScanner方法将字符串拆分为行,而不是使用componentsSeparatedByString:。这会将您的方法简化为这两行:

NSString *file = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
return [file componentsSeparatedByString:@"\n"];
不过,你不应该将数组变量命名为“dict”,这意味着它是NS(Mutable)Dictionary