2013-07-23 80 views
1

我有NSData對象存儲數據(非字符/非ASCII)。我試圖把它放到一個數組中,而不會被解釋爲字符或ascii。我知道這個問題之前已經被問過幾次了,但是在這種情況下,沒有任何一個解決方案對我有效。我試圖避免使用屬性列表,這是大多數答案的建議。我已經嘗試將NSData轉換爲NSString,然後將該字符串存儲在數組中,但當然,無論我使用的編碼如何,它都會在將字符串放入字符串後解釋爲字符。例如,其中一個NSData包含值2c,當我將它放入一個字符串時,它被解釋爲,。有誰知道我可以如何將原始數據存儲在NSArray中?也許通過將數據存儲在用戶默認值中,然後以某種方式將默認值存儲在數組中?我很茫然。把NSData放入NSArray

下面是一些可能相關的代碼:

NSData *receivedData = [bleDevice readData]; 
NSString *receivedDataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; 
[dataArray insertObject:receivedDataString atIndex:0]; 

當我打電話: [dataArray insertObject:receivedDataString atIndex:0]; 它將存儲像2c廣告,

但是,當我嘗試插入原始數據,如: [dataArray insertObject:receivedData atIndex:0]; 它不會存儲任何東西。沒有警告,沒有錯誤。我會NSLog數組,它是空的。

+0

請發佈示例代碼。 NSArray包含指針,所以對象不應該被改變。 –

+0

當然,只是更新它。 – John

+0

'[dataArray insertObject:receivedData atIndex:0];'最肯定*將*將「receivedData」插入到「dataArray」中(只要兩者都存在)。 「receivedData」可以是任何類型的NSObject - 不必是字符串。如果數組在記錄時爲「空」,那麼數組本身永遠不會被創建。 –

回答

3

[dataArray insertObject:receivedData atIndex:0];肯定會在「dataArray」中插入「receivedData」(只要兩者都存在)。 「receivedData」可以是任何類型的NSObject - 不必是字符串。如果數組在記錄時爲「空」,那麼數組本身永遠不會被創建。

(要記住,如果一個對象的指針是零則方法調用該指針不會失敗,而是默默地返回零/零,如此「回報無」強烈暗示對象從來沒有被創造是很重要的。)

+0

非常感謝!我剛剛初始化它,它按預期工作。 – John