1

我有 NSData 对象存储数据(非字符/非 ascii)。我试图将它放入一个数组而不将其解释为字符或 ascii。我知道这个问题之前已经被问过几次了,但是在这种情况下,发布的解决方案都没有对我有用。我试图避免使用属性列表,这是大多数答案所建议的。我已经尝试将 NSData 转换为 NSString,然后将字符串存储在数组中,但是当然,无论我使用什么编码,在将其放入字符串后它都会被解释为字符。例如,其中一个 NSData 包含 value 2c,当我将其放入字符串时,它被解释为,. 有谁知道我如何将原始数据以原始状态存储在 NSArray 中?也许通过将数据存储在用户默认值中,然后以某种方式将默认值存储在数组中?我不知所措。

这是一些可能相关的代码:

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

当我打电话时: [dataArray insertObject:receivedDataString atIndex:0]; 它将存储类似2cad a 的东西,

但是,当我尝试插入原始数据时,例如: [dataArray insertObject:receivedData atIndex:0]; 它根本不会存储任何东西。没有警告,没有错误。我将 NSLog 数组,它为空。

4

1 回答 1

3

[dataArray insertObject:receivedData atIndex:0];大多数肯定会将“receivedData”插入“dataArray”(只要两者都存在)。“receivedData”可以是任何类型的 NSObject——不必是字符串。如果在记录时数组为“null”,则数组本身永远不会被创建。

(重要的是要记住,如果对象指针为 nil,则对该指针的方法调用不会失败,而是默默地返回零/nil,因此“返回 nil”强烈暗示该对象从未被创建。)

于 2013-07-23T15:42:40.073 回答