我已经学习了Objective-C五天而且我只有两周的编程经验,所以请尽可能简单地回答。
我正在书中练习,要求我生成一个也是常规单词的专有名单。为此,我正在为NSArray
专有名称对象的每个专有名称运行for循环。在for循环中,我使用NSArray
方法对caseInsensitiveCompare
常规单词对象中的每个单词进行嵌套for循环测试。
这是我的代码:
import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//Gets the sting with proper names
NSString *propername = [NSString stringWithContentsOfFile:@"/usr/share/dict/propernames" encoding:
NSUTF8StringEncoding error:NULL];
//Gets the string with regularwords
NSString *inpropername = [NSString stringWithContentsOfFile:@"/usr/share/dict/words" encoding:
NSUTF8StringEncoding error:NULL];
NSArray *proper = [propername componentsSeparatedByString:@"/n"];
NSArray *inproper = [inpropername componentsSeparatedByString:@"/n"];
for (NSString *n in proper){
NSLog(@"%@", n);
for(NSString *i in inproper){
NSLog(@"%@", i);
if ([n caseInsensitiveCompare:i] == NSOrderedSame)
{
NSLog(@"Yahooo! Got One! %@", n);
}
}
}
}
return 0;
}
而不是以嵌套方式运行的for循环,它们以顺序方式运行。输出是这样的:
Aaron
all the names...
Yvonne
a
all the regular words....
Zyzzogeton
为什么嵌套for循环没有以嵌套方式运行的任何想法?
答案 0 :(得分:4)
代码是正确的,除非您使用“/ n”而不是“\ n”将文件分解为单词。
这意味着每个数组只包含一个元素,该元素是包含所有单词的字符串。