我正在尝试将加速度计数据记录到iPhone上的txt文件中。我让它工作得很好,启用了后台应用程序模式,还使用了位置服务来保持CoreMotion在后台运行。
我的问题是当应用在后台时没有写入文件。
甚至可能吗?我在iPhone 5上使用iOS 7。
更新:以下是我的代码。
- (void)writeToFile:(NSString*)line sensor:(NSString*)sensorType {
// current date
NSDate *currentDate = [[NSDate alloc] init];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
[dateFormatter setDateFormat:@"yyyyMMdd"]; //"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
NSString *localDateString = [dateFormatter stringFromDate:currentDate];
// storage path and file name
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths lastObject]; //objectAtIndex:0 (iOS 2+)
NSString *fileDir = [documentsDir stringByAppendingPathComponent:localDateString];
NSString *fileName = [NSString stringWithFormat:@"%@_%@.txt", sensorType, localDateString];
NSString *filePath = [fileDir stringByAppendingPathComponent:fileName];
NSFileManager *fileManager = [NSFileManager defaultManager];
// create folder if not exists
if(![fileManager fileExistsAtPath:fileDir]) {
[fileManager createDirectoryAtPath:fileDir withIntermediateDirectories:NO attributes:nil error:nil];
}
// create file or append to file
if(![fileManager fileExistsAtPath:filePath])
{
[line writeToFile:filePath atomically:YES encoding:NSASCIIStringEncoding error:nil];
}
else
{
NSFileHandle *myHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
[myHandle seekToEndOfFile];
[myHandle writeData:[line dataUsingEncoding:NSASCIIStringEncoding]];
}
}
感谢。
答案 0 :(得分:1)
没关系,让它运转起来。我想我需要的只是晚餐来重振我的大脑。我所做的是将我的- (void)applicationDidEnterBackground:(UIApplication *)application
代码块移到AppDelegate.m
,不知怎的,我把它放在ViewController.m
感谢所有建议和意见。