[英]NSString from NSData is nil
我嘗試從NSData獲取NSString,但得到的值為零。 這是我的代碼:
NSString *dataString = [[NSString alloc] initWithData:self.message.data encoding:NSUTF8StringEncoding];
當我記錄self.message.data
我得到:
Printing description of self->_message->_data:
<OS_dispatch_data: data[0x17e48290] = { leaf, size = 331233, buf = 0x3aac000 }>
這意味着我的數據不是零……
有人可以幫忙嗎?
在評論中回答您的問題: OS_dispatch_data
是dispatch_data_t
,它具有與iOS 7和Mavericks上的NSData的免費橋接。 您只需將其轉換為NSData *
。
因此,您可以編寫以下代碼:
NSData *dataCast = self.message.data;
NSString *dataString = [[NSString alloc] initWithData:dataCast encoding:NSUTF8StringEncoding];
現在,您將獲得正確的字符串!
就我而言,它出現在AFNetworking
將內部NSMutableData
AFNetworking
轉換為NSData
。
這個簡單的演員表對我有幫助。
UPD:正如@ Daij-Djan提到的:如果不起作用-嘗試檢查您的文本編碼。
例如,如果您正在使用NSURLSessionTask
:
NSURLSessionTask *task; // Your NSURLSessionTask
NSString *encoding = [[task response] textEncodingName];
在您的情況下( NSUTF8StringEncoding
),應該為“ utf-8” 。
請嘗試使用UTF-16編碼。 如果其中的任何數據均未被識別,則轉換為UTF-8可能是一個錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.