2011-07-14 45 views
0

我正在寻找几个填充单词的数组。最终,我希望能够从数组中抽出一个随机单词并显示它(我已经掌握了这一点)。我在想什么是填充这个数组的最佳方式。如果我只需要输入:使用.txt文件填充此数组的最佳方法?

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

或者是那里的字存储在一个文本文件里,我只能有一个循环的文本文件保存到阵列添加的每个字一个更好的办法?

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

UPDATE

之后做一些研究,我发现这个here。这似乎正是我想要的。唯一的一点是它给了我一个警告

“stringWithContentsOfFile”已过时

我知道完整的NSString方法是:

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

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

- (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

你或许可以使用NSUTF8StringEncodingencoding参数(取决于您如何创建文件,但这是最常见的)。

除了使用NSScanner之外,您还可以简单地将字符串拆分为符合componentsSeparatedByString:方法的行。这减少了你的方法,只是这两条线:

NSString *file = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL]; 
return [file componentsSeparatedByString:@"\n"]; 

顺便说一句,你不应该名称的数组变量“字典”,这将意味着它是一个NS(Mutable)Dictionary

+0

将错误设置为nil或NULL的任何主要区别? – NuGy

+0

并且谢谢!这就像一个惊人的魅力(可能会改变NSUR的路径)但是,谢谢!!!!!! – NuGy

+0

你可以使用'nil'或'NULL',它主要是风格问题。当它引用一个指针而不是一个对象引用时,我更喜欢使用'NULL'。这使得它更清楚的是参数的类型是'NSError **'而不是'NSError *'。 – omz

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]; 
+0

创建plist最直接的方法是什么? (我没有太多的经验。) – NuGy

+0

如果你在Xcode中创建一个新文件,其中一个选项是创建一个plist(我认为显示为Property List)。在Xcode 3.x中还有一个你可以使用的属性列表编辑器应用程序。在Xcode 4中,只需要使它成为根对象就是一个Array。要验证这一点,只需以纯文本的形式查看文件,并确保最后两个标记为'',然后'',如果在删除它的过程中有某些内容,并且它与文件开头的对应部分相对应。 – theMikeSwan

相关问题