假设我的应用程序状态被提取到一个对象中(这样所有与应用程序实例相关的信息都包含在一个对象中),并且该对象支持NSCoding协议。我该如何轻松地将其持久化,并在应用程序退出/启动时加载它?
我的当前代码如下:
我的当前代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
State* state = (State*)[defaults objectForKey:@"State"];
if(state!=nil)
{
viewController.state = state;
}
}
- (void)applicationWillTerminate:(UIApplication *)application {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.viewController.state forKey:@"State"];
}
但是在加载时状态始终为nil...所以我认为这不是最好的模式 :)
事实证明,NSUserDefaults仅支持属性列表对象,例如NSArray、NSData等等...除非你将其包装在NSData中,否则不支持自定义对象。