Преобразование NSData в NSString - PullRequest
2 голосов
/ 30 января 2012

Я анализирую URL, получаю некоторые данные в NSMutableData объекте, т.е. urlData. Теперь в - (void)connectionDidFinishLoading:(NSURLConnection *)connection {} я хотел бы преобразовать urlData в NSString. Я пробовал с:

NSString *responseData =  [NSString stringWithCString:[urlData bytes] length:[urlData length]];   
NSString* responseData = [NSString stringWithUTF8String:[urlData bytes]];   
NSString *responseData = [[NSString alloc] initWithBytes:[urlData bytes] length:[urlData length] encoding:NSUTF8StringEncoding] ;   
NSString *responseData = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding];   
NSString *responseData = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 

Я получаю null в NSString объекте или PK (поменяйте местами вопросительные знаки, которые я не могу вам показать).

Может кто-нибудь дать мне решение для этого?

Ответы [ 2 ]

1 голос
/ 30 января 2012
-(id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding

- это метод, который вам нужно использовать. Ваша проблема либо в том, что вы не используете правильную кодировку, либо данные не являются строковыми данными. NSLog данные и изучить их, чтобы выяснить, что это на самом деле.

Из документов Apple:

Объект NSString, инициализированный преобразованием байтов данных в Юникод символы с использованием кодировки. Возвращаемый объект может быть отличается от оригинального приемника. Возвращает ноль, если по какой-то причине происходит сбой инициализации (например, если данные не представлять действительные данные для кодирования).

0 голосов
/ 30 января 2012

Используйте код ниже, это будет работать

NSString *str=[[NSString alloc] initWithBytes:[urlData bytes] length:[urlData length] encoding:NSStringEncodingConversionAllowLossy]; 
NSLog(@"urlData........%@",str);
...