2012-01-30 5 views
2

URL을 파싱 중이므로 NSMutableData 개체에 데이터가 있습니다 (예 : urlData). 이제 - (void)connectionDidFinishLoading:(NSURLConnection *)connection {}에서 urlDataNSString으로 변환하고 싶습니다.NSString을 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]; 

나도 NSString 객체에 null을 얻고 또는 PK가 (난 당신을 보여 드릴 수 없습니다 물음표 역) : 내가 함께 노력했다.

아무에게도이 문제에 대한 해결책을 줄 수 있습니까?

+0

작동합니다 당신은 당신이 urlData에있는 데이터가 정확하고 정말 문자열이 있습니까? –

+0

@Nick Bull : .epub 확장 파일을 구문 분석하고 NSMutableData에서 데이터를 가져 오는 중입니다. – iOSDev

답변

1
-(id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding 

은 사용해야하는 방법입니다. 문제가 올바른 인코딩을 사용하고 있지 않거나 데이터가 문자열 데이터가 아닙니다. 데이터를 NSLog로 조사하여 실제로 무엇이되는지 확인하십시오. 애플 문서에서

: 인코딩을 사용하여 유니 코드 문자로 데이터 바이트를 변환하여 초기화

있는 NSString 객체입니다. 반환 된 개체는 원래 수신기와 다른 일 수 있습니다. 어떤 이유로 든 초기화에 실패하면 nil을 반환합니다 (예 : 데이터가 이 인코딩에 유효한 데이터를 나타내지 않는 경우). 코드 아래

+0

답장을 보내 주셔서 감사합니다. – iOSDev

0

사용이

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

NSStringEncodingConversionAllowLossy는 'initWithBytes'의 인코딩 옵션이 아니며 NSStringEncodingConversionOptions 옵션입니다. 그 값은 1이며 이것은'NSASCIIStringEncoding'과 같습니다. 그래서이 명령문은 OP가 이미 시도한 NSASCIIStringEncoding을 사용하여 변환 할 것입니다. – zaph

+0

@ Naayana : 나는 여전히 같은 것을 얻고있다. 귀중한 대답에 감사한다. 이제 나는 내 논리를 바꾸고 그런 식으로 진행합니다. – iOSDev

관련 문제