2011-11-25 64 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

相關問題