iPhone - 如何从应用程序中保存用户设置?

9
什么是在iPhone应用程序中保存几个变量的最简单方法?
我有一个与不同sqlite数据库一起工作的应用程序,我想在退出应用程序后保存最后活动的数据库名称,以便在用户再次进入应用程序时打开最后一个数据库。
为此目的创建一个特殊的数据库并将这些值存储在其中有点不方便,因为我只有几个变量要存储。
那么,最简单的存储这些变量的方法是什么?
提前谢谢。
2个回答

16

NSUserDefaults是存储此类设置的最佳位置。


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会创建一个带有您在kDefaultDatabaseName中设置为默认数据库的全新NSUserDefaults字典。
当应用程序完成启动后,成员变量databaseName会采用在NSUserDefaults字典中设置的值。这可以是kDefaultDatabaseName,也可以是在运行应用程序后更新的任何其他值。
在运行应用程序期间,用户可能会更改databaseName的值。
在应用程序终止之前,databaseName的值将被写入NSUserDefaults字典中。下一次打开应用程序时,databaseName将采用更新后的新值。
您不必等到应用程序终止才将此更新写入字典。例如,您可以在用户将databaseName更改为某些新内容后立即执行此操作。但这取决于您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接