我有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。
答案 0 :(得分:3)
[dataArray insertObject:receivedData atIndex:0];
肯定会将“receivedData”插入“dataArray”(只要两者都存在)。 “receivedData”可以是任何类型的NSObject - 不必是字符串。如果在记录数组时该数组为“null”,则数组本身永远不会被创建。
(重要的是要记住,如果一个对象指针是nil,那么对该指针的方法调用不会失败,而是静默地返回零/ nil,因此“返回nil”强烈建议永远不会创建该对象。)