У меня определена следующая структура C:
typedef struct {float x;плавать у;float z;} metric;
Я хочу сохранить точки акселерометра в массиве и что-то с этим сделать позже.
Итак, у меня есть изменяемый массив, который инициализируется следующим образом в моем методе viewDidLoad:
metricsArray_ = [[[NSMutableArray alloc] init] retain];
в моем didAccelerateметод я создаю структуру для хранения значений и добавляю ее в массив:
metric metricData;
metricData.x = acceleration.x;
metricData.y = acceleration.y;
metricData.z = acceleration.z;
NSValue *metricObject = [[NSValue valueWithBytes:&metricData objCType:@encode(struct metric)]retain];
[metricsArray_ addObject:metricObject];
Позже, когда я прекращаю опрашивать данные, я пытаюсь перебрать массив и записать значения, но все значения равны нулю:
NSEnumerator * enumerator = [metricsArray_ objectEnumerator];
id element;
while(element = [enumerator nextObject])
{
metric metricData;
[element getValue:&metricData];
NSLog(@"x=%f,y=%f,z=%f",metricData.x, metricData.y,metricData.z);
}
Что я здесь не так делаю?И есть ли лучший способ хранения точек данных акселерометра?Я хотел сохранить их в структуре, а не в объекте (хотя в конечном итоге вам все равно придется использовать NSValue)
Спасибо