2011-11-25 97 views
1

我想读取一个txt文件并将其存储在NSArray中。这里是我的代码,但似乎有什么缺失,我不知道!如何读取一个txt文件并存储在NSArray中?

NSURL *url=[NSURL URLWithString:@"http://www.google.com/robots.txt"]; 

    NSMutableArray *robots=[NSMutableArray arrayWithContentsOfURL:url]; 

    NSLog(@"%@",robots); 
+0

弦我觉得@anticyclope钉支护填充这一个,但在将来,请更多地说出什么是错的 - 只是说“缺少什么”并不能描述你期望的内容,你看到的内容以及它们与众不同的原因。 –

回答

6

你必须URL的内容第一次加载到字符串如

NSString *content = [NSString stringWithContentsOfURL:URL encoding:NSUTF8StringEncoding error:nil]; 

然后拆分此字符串是这样的:

NSArray *parsed = [content componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 

现在parsed阵列将包含来自URL字符串。

编辑:

如果要筛选阵列,添加以下代码:

NSIndexSet *indexes = [parsed indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
    NSRange range = [(NSString *)obj rangeOfString:@"Disallow"]; 
    if (range.location != NSNotFound) 
    { 
     return YES; 
    } 
    return NO; 
}]; 

NSArray *disallowed = [parsed objectsAtIndexes:indexes]; 

disallowed将使用包含Disallow字符串

+0

谢谢,帮助!我怎样才能返回只包含@“Disallow”字符串的行? –

+0

第一行是什么?这是一种方法吗?这些参数是什么? –

+0

这一行返回索引ob对象,在这种情况下,它传递了一些测试,子串匹配。它枚举数组中的所有对象并查看该对象是否通过测试。它使用块,Objective-C功能(如其他某种语言的匿名函数)对每个枚举项目运行测试。它返回YES,如果子字符串匹配,否则不返回。 obj是数组中的一个对象,idx是它的索引。另外,如果你想停止测试,你可以在停止变量中返回YES。 – anticyclope