Парсиране на NSData със съдържанието на файла

Извличам някакъв файл от мрежата, съдържащ данни в конкретен формат, който бих искал да анализирам. Знам обаче само как да изтегля файла от мрежата:

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

В метода за анализ бих искал да токенизирам всеки ред от файла, но не съм сигурен как да извлека редовете от обекта NSData.

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

Някакво предложение?


person mm24    schedule 12.05.2014    source източник
comment
Какво точно взимаш?   -  person Larme    schedule 12.05.2014
comment
Можете да конвертирате NSData в NSString. След това разделяйте този низ при всяко прекъсване на ред и преминавайте в цикъл върху получения масив.   -  person Marc    schedule 12.05.2014
comment
Преобразувайте NSData в NSString и използвайте CFStringTokenizer. Връзка към Apple тук или вижте StackOverflow Отговор   -  person Pancho    schedule 12.05.2014


Отговори (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
    }
}
person Ben    schedule 12.05.2014