嵌套的NSArray for循环不会以嵌套方式循环

时间:2012-08-12 01:41:11

标签: objective-c for-loop nsarray

我已经学习了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循环没有以嵌套方式运行的任何想法?

1 个答案:

答案 0 :(得分:4)

代码是正确的,除非您使用“/ n”而不是“\ n”将文件分解为单词。

这意味着每个数组只包含一个元素,该元素是包含所有单词的字符串。