在长期记忆中保存iPhone应用程序中的几个变量的最简单方法是什么?
我有一个适用于不同sqlite数据库的应用程序,我希望在退出应用程序后保存最后一个活动数据库名称,以便在用户再次进入应用程序时打开最后一个数据库。
为此目的创建一个特殊的数据库并将这些值存储在其中有点不方便,因为我只有几个要存储的变量。
存储这些变量的最简单方法是什么?
提前谢谢。
答案 0 :(得分:16)
NSUserDefaults是这样设置的最佳位置。
答案 1 :(得分:6)
在我的头文件中,我可能会添加以下内容:
@interface myAppDelegate : NSObject <UIApplicationDelegate> {
...
NSString *databaseName;
}
extern NSString * const kDefaultDatabaseName;
extern NSString * const kAppDatabaseNameKey;
在我的实现文件中,我将添加以下内容:
NSString * const kDefaultDatabaseName = @"myDefaultDatabaseName";
NSString * const kAppDatabaseNameKey = @"kAppDatabaseNameKey";
@implementation myAppDelegate
+ (void) initialize {
if ([self class] == [MyAppDelegate class]) {
UIApplication* myApp = [UIApplication sharedApplication];
NSString *defaultDatabaseName = kDefaultDatabaseName;
NSMutableDictionary *resourceDict = [NSMutableDictionary dictionary];
[resourceDict setObject:defaultDatabaseName forKey:kAppDatabaseNameKey];
}
}
- (void) applicationDidFinishLaunching:(UIApplication *)application {
...
databaseName = [[NSUserDefaults standardUserDefaults] stringForKey: kAppDatabaseNameKey];
}
...
- (void) applicationWillTerminate:(UIApplication *)application {
...
[[NSUserDefaults standardUserDefaults] setObject:databaseName forKey:kAppDatabaseNameKey]
}
当您的应用程序启动时,如果没有预先存在的用户默认值,+initialize
会创建一个新的NSUserDefaults
字典,其中包含您在kDefaultDatabaseName
中设置为默认数据库的任何内容。
当应用程序完成启动时,成员databaseName
将获取NSUserDefaults
字典中设置的值。这可以是kDefaultDatabaseName
或运行应用程序后更新的内容。
在运行应用程序时,您的用户可能会将databaseName
的值更改为其他内容。
在应用程序终止之前,databaseName
的值将写入NSUserDefaults
字典。下次打开应用程序时,databaseName
将采用新的更新值。
在将此更新写入字典之前,您不必等待应用程序终止。例如,您可以在用户将databaseName
更改为新内容后立即执行此操作。但这取决于你。