1

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

我创建了一个 NSMutable 数组

NSmutableArray *test;

初始化它

test = [[test alloc]init];

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

[test addObject:Message.data7];

Message.data7 为 uint8_t 格式

但它想让我这样存储,

任何人都可以解释我如何做到这一点。

提前致谢

4

4 回答 4

5

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

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

当您想从数组中检索值时:

uint8_t value = (uint8_t)[test[index] unsignedCharValue];
于 2013-12-06T11:00:45.447 回答
1

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

于 2013-12-06T10:59:20.597 回答
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)];
于 2013-12-06T10:52:55.113 回答
1

你不能在里面存储简单类型NSMutableArray。您只能存储对象。

你有 2 种方法,在NSNumber从数组读取或使用 C 数组时将它们存储并转换回 uint8_tuint8_t array[]

于 2013-12-06T10:53:08.807 回答