将uint8_t存储在NSMutableArray中

时间:2013-12-06 10:50:31

标签: ios iphone nsmutablearray uint8t

在我的程序中,我从uint8_t类型的传感器接收数据。我需要将这些数据存储在NSMutable数组中。

我创建了一个NSMutable数组

NSmutableArray *test;

初始化

test = [[test alloc]init];

然后我尝试将数据存储在我的数组中

[test addObject:Message.data7];

Message.data7采用uint8_t格式

但它希望允许我这样存储,

任何人都可以解释我该怎么做。

提前致谢

4 个答案:

答案 0 :(得分:4)

您无法在NSArray / NSMutableArray中存储简单的原语。但是,您可以将其转换为NSNumber并存储:

[test addObject:@(Message.data7)];

如果要从数组中检索值:

uint8_t value = (uint8_t)[test[index] unsignedCharValue];

答案 1 :(得分:1)

Objective-C对象只能存储对象。

unit8_t不是obj-c对象,因此您无法添加到NSArray

您需要将该值转换为某种兼容类型(任何objective-c对象),然后您可以存储它。

uint8_t value = 10;
NSArray *array = @[@(value)]; //boxed to NSNumber, and added to array.

在您的情况下:

[test addObject:@(Message.data7)];

答案 2 :(得分:1)

您无法在NSMutableArray内存储简单类型。您只能存储对象。

你有2种方法,存储NSNumber并在从数组中读取或使用C数组uint8_t array[]

时将它们转换回uint8_t

答案 3 :(得分:1)

uint8_tunsigned char中定义为_uint_8_t.h,因此您可以使用NSNumber initWithUnsignedChar:并将其存储在数组中,然后使用unsignedCharValue并将其强制转换回uint8_t