2012-01-30 135 views
2

我正在解析URL,我在NSMutableData對象(即urlData)中獲取了一些數據。現在在- (void)connectionDidFinishLoading:(NSURLConnection *)connection {}我想將urlData轉換爲NSString。我曾嘗試用:將NSData轉換爲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有你的數據是正確的,確實是一個字符串? – 2012-01-30 12:18:41

+0

@Nick Bull:我正在解析.epub擴展文件並解析該鏈接並獲取NSMutableData中的數據 – iOSDev 2012-01-30 12:31:04

回答

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

是您需要使用的方法。您的問題是您沒有使用正確的編碼或數據不是字符串數據。 NSLog記錄數據並檢查它以確定它究竟是什麼。

從Apple文件:

通過轉換字節數據轉換成使用編碼 Unicode字符初始化一個NSString對象。返回的對象可能是 與原始接收器不同。如果由於某種原因 初始化失敗(例如,如果數據不是 表示編碼的有效數據),則返回nil。

+0

感謝您的回覆 – iOSDev 2012-01-30 12:38:12

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 2012-01-30 12:40:39

+0

@Naayana:我仍然得到同樣的東西,謝謝你的寶貴答案。現在我已經改變了我的邏輯,並以這種方式進行。 – iOSDev 2012-01-31 06:35:11