将NSData放入NSArray

时间:2013-07-23 15:20:56

标签: objective-c cocoa-touch nsarray nsdata

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

以下是一些可能相关的代码:

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

我打电话的时候: [dataArray insertObject:receivedDataString atIndex:0]; 它会存储类似2c ad ,

的内容

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

1 个答案:

答案 0 :(得分:3)

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

(重要的是要记住,如果一个对象指针是nil,那么对该指针的方法调用不会失败,而是静默地返回零/ nil,因此“返回nil”强烈建议永远不会创建该对象。)