Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将CLLocation数组保存到存档ios_Ios_Arrays_Object_Archive_Cllocation - Fatal编程技术网

将CLLocation数组保存到存档ios

将CLLocation数组保存到存档ios,ios,arrays,object,archive,cllocation,Ios,Arrays,Object,Archive,Cllocation,我似乎不知道如何归档我的位置数据 我想在应用程序被杀死(由用户或操作系统)时归档从位置管理器检索到的CLLocation对象,并在启动时检索它。 但是,在应用程序WillEnterForeground方法中取消归档后,NSLog打印的计数为0 有人能告诉我我做错了什么吗? 这就是我所拥有的: -(void)applicationWillTerminate:(UIApplication *)application { if([self.locs count] > 0) { NSAr

我似乎不知道如何归档我的位置数据

我想在应用程序被杀死(由用户或操作系统)时归档从位置管理器检索到的CLLocation对象,并在启动时检索它。 但是,在应用程序WillEnterForeground方法中取消归档后,NSLog打印的计数为0 有人能告诉我我做错了什么吗? 这就是我所拥有的:

-(void)applicationWillTerminate:(UIApplication *)application {

if([self.locs count] > 0) {
    NSArray* arr = [[NSArray alloc] initWithObjects:self.locs, nil];
    NSString *archivePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"Locs.archive"];
    [NSKeyedArchiver archiveRootObject:arr toFile:archivePath];
    //[arr release];
}
[self.locationManager stopUpdatingLocation];
[self.locationManager release];
}

这些是文件,我已经找到了,但对我来说毫无意义


您必须意识到,从iOS 4开始,如果设备支持多任务处理,
应用程序将终止:
方法永远不会被调用。改用
applicationidenterbackground:
。更好的方法是,每次数据更改时立即保存数据,不要等待应用程序被备份。否则,如果应用程序崩溃或在调试器中终止,您将丢失数据


此外,我不知道将文件保存到
NSTemporaryDirectory()
是否是一个好主意,即使是为了测试。您是否检查过当重新启动应用程序时,保存到该位置的文件是否实际存在。选择库目录可能更好。

您必须意识到,从iOS 4开始,如果设备支持多任务处理,
应用程序将终止:
方法永远不会被调用。改用
applicationidenterbackground:
。更好的方法是,每次数据更改时立即保存数据,不要等待应用程序被备份。否则,如果应用程序崩溃或在调试器中终止,您将丢失数据


此外,我不知道将文件保存到
NSTemporaryDirectory()
是否是一个好主意,即使是为了测试。您是否检查过当重新启动应用程序时,保存到该位置的文件是否实际存在。最好选择库目录。

它的作用是什么?它不做什么?Locs.archive中有什么?它是否输入过终止/进入前台功能。。。。很抱歉,我忘记了一些东西:P self.locs=[NSMutableArray]填充了CLLocation对象。在applicationWillEnterForeground函数中,self.locs的大小(取消归档后)=0。进入时,尺寸大于0。因此,无论是归档还是取消归档都会出错,它会做什么?它不做什么?Locs.archive中有什么?它是否输入过终止/进入前台功能。。。。很抱歉,我忘记了一些东西:P self.locs=[NSMutableArray]填充了CLLocation对象。在applicationWillEnterForeground函数中,self.locs的大小(取消归档后)=0。进入时,尺寸大于0。所以不管是归档还是取消归档都会出错谢谢您的支持!不过,NSTemporaryDirectory()是苹果在文档中关于归档的内容,所以我认为它可以。一旦我发现了问题,我想我不会像你建议的那样等待终止。谢谢你的帮助!不过,NSTemporaryDirectory()是苹果在文档中关于归档的内容,所以我认为它可以。一旦我发现了问题,我想我不会像你建议的那样等待终止。
-(void)applicationWillEnterForeground:(UIApplication *)application {
NSString *archivePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"Locs.archive"];
self.locs = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath];
NSLog(@"friet : %i", [self.locs count]);
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStatusChanged:) name:kReachabilityChangedNotification object:nil];
[self sendLocations];
}