2010-07-14 2 views
1

Я хотел бы добавить этот пример Apple [AccelerometerGraph] возможность хранить данные в файле до тех пор, пока приложение не будет закрыто. Без проблем с блокировкой и других дерьмовых проблем сбора данных в режиме реального времени.Войдите в файл данных акселерометра

Любая идея, образец или что-то, с чем может играть полуновинка?

ответ

2

можно регистрировать данные акселерометра в NSMutableArray, как он попадает, а затем, когда приложение закрывается написать этот массив в файл с:

[array writeToFile:DataPath atomically:YES]; 

просто хотите, чтобы убедиться, что вы не храните каждую запись или он может стать очень быстрым. Есть некоторые проверки на метку времени в объекте ускорения в

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 

сделать это войти каждые несколько секунд, в зависимости от того, как долго вы собираетесь запустить его. (этот метод, вероятно, не был бы разумным работать в течение долгих промежутков времени, не дросселируя его, или делать некоторые другие манипуляции с массивами, чтобы весь массив не хранился в памяти за время жизни приложения)

быстрый способ прочитайте файл, который вы написали.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *DataPath = [documentsDirectory stringByAppendingPathComponent:@"SOMEFILENAME"]; 
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:DataPath]; 
if([array count]<1){ 
//do something with data 
} 
+0

Я хотел бы знать, как извлечь файл после этого ... – nornagon

+0

добавил способ чтения данных, записанных файлов – AtomRiot

+0

(я предполагаю, что вы имели в виду 'если ([число массива] > 0) ':)) Спасибо! – nornagon

0

Если вы просто хотите просмотреть данные по мере их выхода, вы можете сделать простой способ просто зарегистрировать его на консоли.

В MainViewController.m, в - (Недействительными) акселерометра: метод просто добавьте

[filtered addX:filter.x y:filter.y z:filter.z]; // this line is already there 
NSLog(@"%f, %f, %f", acceleration.x, acceleration.y, acceleration.z); 

Тогда при запуске на устройстве, откройте консоль отладчика, и она будет течь из данных для вас , Вот что я получил:

2010-07-13 22:15:45.187 AccelerometerGraph[11241:307] 0.072449, -0.018112, -1.068619 
2010-07-13 22:15:45.203 AccelerometerGraph[11241:307] 0.072449, -0.018112, -1.068619 
2010-07-13 22:15:45.219 AccelerometerGraph[11241:307] 0.072449, 0.000000, -1.050507 
2010-07-13 22:15:45.236 AccelerometerGraph[11241:307] 0.054337, -0.018112, -1.032394 
2010-07-13 22:15:45.254 AccelerometerGraph[11241:307] 0.054337, -0.018112, -1.014282 
2010-07-13 22:15:45.272 AccelerometerGraph[11241:307] 0.072449, -0.018112, -1.050507 
2010-07-13 22:15:45.287 AccelerometerGraph[11241:307] 0.072449, -0.018112, -1.068619 
+0

спасибо за ваш ответ, однако, как я уже указывал, я искал способ сохранить его, а не просто отображать данные в консоли. – amok

+0

Да, другой человек уже опубликовал, как это сделать через файл, поэтому я просто добавил другой способ на случай, если вы хотите просто его увидеть. В моем примере также показано, где добавить журнал (файл или поток). – christophercotton

Смежные вопросы