2014-05-12 48 views
1

我正在從Web中回收一些包含特定格式數據的文件,我想解析它。但是我只知道如何從網上獲取文件:解析帶有文件內容的NSData

dispatch_async(server_queue, ^{ 
    NSData* data = [NSData dataWithContentsOfURL: 
        kURL]; 
    [self performSelectorOnMainThread:@selector(parseData:) 
          withObject:data waitUntilDone:YES]; 
}); 

在parse方法我想來標記文件的每一行,但我不知道如何提取從NSData對象的行。

-(void)parseData:(NSData *)responseData { 
    //tokenize each line of responseData 
} 

有什麼建議嗎?

+0

準確地提取什麼? – Larme

+0

您可以將NSData轉換爲NSString。然後在每個換行符處分割該字符串,並在結果數組上循環。 – Marc

+0

將NSData轉換爲NSString並使用CFStringTokenizer。 Apple鏈接[here](https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFStringTokenizerRef/Reference/reference.html#//apple_ref/doc/uid/TP40005095-CH203-SW1)或參閱[StackOverflow答案](http://stackoverflow.com/questions/6877659/how-to-get-an-array-of-sentences-using-cfstringtokenizer) – Pancho

回答

1

NSData不是可以通過解析它的格式。只需將其轉換爲如下的NSString:

-(void)parseData:(NSData *)responseData 
{ 
    NSString *stringFromData = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    NSArray *eachLineOfString = [stringFromData componentsSeparatedByString:@"\n"]; 
    for (NSString *line in eachLineOfString) { 
     // DO SOMETHING WITH THIS LINE 
    } 
}