iphone — пропускает раздел данных при загрузке?

#iphone #ios4 #nsurlconnection #nsxml

#iPhone #ios4 #nsurlconnection #nsxml

Вопрос:

В настоящее время я использую NSURLConnection для загрузки некоторой даты из базы данных с помощью php-скрипта на сервере.

Соединение работает нормально, и данные получены правильно. Однако у меня возникает проблема, когда я приступаю к анализу данных.

В настоящее время я пытаюсь использовать NSXMLParser для анализа данных, однако это не удается с кодом ошибки 4, я думаю, это потому, что то, что я извлекаю, не является полностью XML. Если это полностью XML, это работает.

Вот пример извлеченных данных :


 43534545-45345345-34534554|iPhone emulator|<provdoc>
<characteristic type="P1">
...
</characteristic>
</provdoc>
  

И что я хотел бы сделать, это разделить данные на:

 43534545-45345345-34534554
  

и:

 iPhone emulator
  

и

 <provdoc>
<characteristic type="Profile1">
...
</characteristic>
</provdoc>
  

Итак, я предполагаю, что я должен сделать это в следующей функции, где я беру данные, мне нужно знать, как я разделяю данные на вышеупомянутые три раздела?

Итак, в итоге я получаю две строки, первую с числами, а вторую с битом эмулятора iPhone, а затем данные, которые можно отправить через NSXMLParser.

Может ли кто-нибудь указать мне правильное направление, как и что мне нужно для этого?

 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

    [self.responseData appendData:data];

}
  

Ответ №1:

Преобразуйте окончательные NSData в NSString:

 NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSUTF8Encoding];
  

Затем вам нужно будет начать разделять эту строку. Вот пример получения первой части:

 NSRange end = [someString rangeOfString:@"<"];
NSString *str = [someString substringWithRange:NSMakeRange(0, end.location)];
  

Затем разделите первый:

 NSArray *initialItems = [str componentsSeparatedByString:@"|"];
  

Вы должны быть в состоянии разобраться с остальным с помощью вышеуказанных методов.

Комментарии:

1. Отлично, преобразование из данных в строку, разделение строки и последующее преобразование обратно в данные для синтаксического анализа было частью, которую я не понял, большое спасибо, теперь она работает