在应用退出时转储NSUserDefaults?

时间:2013-06-02 17:43:45

标签: objective-c

我正在使用NSUserDefaults在我的应用程序运行时保存一些数据,但我想在应用程序终止时转储所有数据。这是可能的,如果是这样,我该怎么做?谢谢! 〜Carpetfizz 我知道有这个,但我不知道该把它放在哪里。它应该进入应用代表吗?

    NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];



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


   // NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
    //[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

    [NSUserDefaults resetStandardUserDefaults];





}

2 个答案:

答案 0 :(得分:1)

您的问题的答案是:您应该使用NSUserDefaults'类方法:

+ (void)resetStandardUserDefaults

ApplicationDelegate的方法:

- (void)applicationWillTerminate:(UIApplication *)application

但更好的问题是:如果要在应用程序完成执行后转储存储的所有信息,为什么要使用NSUserDefaults?最好将所有信息存储在一个对象上(可能是一个Singleton?),而不是使用NSUserDefaults

答案 1 :(得分:1)

你正在做的是hacky,这对应用程序的可维护性来说是一个坏主意:-)。 NSUserDefaults用于持久存储(跨应用程序启动)。您正在将自己置于一条路径中,您无法使用NSUserDefaults来存储持久性设置。您应该考虑创建一个新类,其中包含您填入NSUserDefaults的“临时”信息。

尝试这样的事情:

@interface MyAppSettings : NSObject
@property (nonatomic, strong) NSString *userName;
@property (nonatomic, strong) NSString *authenticationToken;
@end

@implementation MyAppSettings
@end