我正在寻找使用单词填充的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;
}
答案 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
。