在我的程序中,我从uint8_t类型的传感器接收数据。我需要将这些数据存储在NSMutable数组中。
我创建了一个NSMutable数组
NSmutableArray *test;
初始化
test = [[test alloc]init];
然后我尝试将数据存储在我的数组中
[test addObject:Message.data7];
Message.data7采用uint8_t格式
但它希望允许我这样存储,
任何人都可以解释我该怎么做。
提前致谢
答案 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[]
答案 3 :(得分:1)
uint8_t
在unsigned char
中定义为_uint_8_t.h
,因此您可以使用NSNumber
initWithUnsignedChar:
并将其存储在数组中,然后使用unsignedCharValue
并将其强制转换回uint8_t
。