Я пытаюсь записать данные акселерометра в базу данных CoreData sql в приложении для ведения журналов, которое я написал для помощи другому проекту.Приложение простое: оно записывает данные ускорения в структуру, созданную в Core Data с частотой f = 100 Гц.
Все отлично, за исключением того, что я получаю реальную частоту в базе данных ближе к 5 Гц или к низкой при 0,1 Гц в некоторых тестовых случаях.
Я настроил акселерометр согласно документации:
// Accelerometer
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.updateInterval = 1./100; // T = 1/f. f=100Hz.
accelerometer.delegate = self;
Затем при обратном вызове я просто записываю его в новую строку в Базовых данных:
- (void)accelerometer:(UIAccelerometer *)accelerometer
didAccelerate:(UIAcceleration *)acceleration{
AccelerometerData *dataPoint = [NSEntityDescription insertNewObjectForEntityForName:@"AccelerometerData" inManagedObjectContext:self.managedObjectContext];
[self.session addAccelerometerDataObject:dataPoint];
dataPoint.x = [NSNumber numberWithDouble:acceleration.x];
dataPoint.y = [NSNumber numberWithDouble:acceleration.y];
dataPoint.z = [NSNumber numberWithDouble:acceleration.z];
dataPoint.timestamp = [NSNumber numberWithDouble:acceleration.timestamp];
Есть идеи, почему не хватает данных?
Я получаю гораздо более высокие частоты из Core Location.Я знаю, что вставка новой строки в управляемый объект обходится дорого, но я не могу представить ее в масштабе 1/100 секунды!