我正在使用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];
}
答案 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