保存退出应用程序数据状态

我有24串一个NSMutableArray。

我需要的,如果用户收到电话或退出应用程序保存这些数据。

我一直在寻找到很多的例子,但由于某些原因似乎无法确定保存数据的最佳方式。

24字符串对应的24个按钮和它们的状态。 当单击一个按钮,它会显示该按钮的标签(0 - 23)相应的阵列信息。 我需要保留的是,如果10个按钮,其中点击,显示了他们的数据,如何/什么是保留这些数据,因此它可以在应用程序启动时重新加载的最佳方式?

我想我需要存储:

按钮标签,相应的数组值按钮,
按钮的状态(是否有点击和值显示与否)

我将存储该数据的应用程序的退出,然后当应用再次启动时,我会确定该存储的数据是否存在,如果这样填充阵列和检查按钮状态以确定它是否已经被示出,如果是,设置它相应地。 然后,当加载该文件,我会删除存储的数据(.DAT文件,如果以这种方式存储)。 如果用户退出优雅,下次启动时通过这种方式,它会开始一个新游戏。

我已经看过了,他们将数据存储到一个.dat文件,但我有问题,实施这个几个例子...。而想知道,这甚至是最好的办法。

任何帮助或想法,这是极大的赞赏。

地理...

--------------解决方案-------------

你可以将数据保存在Documents目录中的plist。 如果数据是存在的,加载它,如果没有,就提供一个干净的运行。

要加载的数据:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents = [paths objectAtIndex:0];
NSString *filePath = [documents stringByAppendingPathComponent:@"buttonState.plist"];
NSMutableDictionary *buttonState = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

要保存的数据:

[buttonState writeToFile:filePath atomically: YES];

你应该能够将其存储在NSUserDefaults

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:buttonState forKey:@"buttonState"];
[defaults synchronize];

// Then to get the state back
NSMutableArray* buttonState = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"buttonState"] mutableCopy];

我用我的保存数据NSKeyedArchiver / NSKeyedUnarchiver因为你NSMutableArray已经支持NSCoding协议,则可以只使用

yourArray = [NSKeyedUnarchiver unarchiveObjectWithFile:file];

[NSKeyedArchiver archiveRootObject:yourArray toFile:file];

编辑:

我想NSArray的自己的方法也适用

[NSArray writeToFile:]
[NSArray initWithContentsOfFile:]

分类:iphone 时间:2015-03-15 人气:0
本文关键词: Xcode中,iPhone,目标C
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.046 (s). 10 q(s)