2014-05-12 42 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 
    } 
}