簡體   English   中英

來自NSData的NSString為零

[英]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_datadispatch_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM