2009-04-25 85 views
9

什么是在iPhone应用程序长期记忆中保存几个变量的最简单方法?iPhone - 如何从应用程序保存用户设置?

我有不同的SQLite数据库运行的应用程序和应用程序,以节省最后一个活动的数据库名称,以便在用户再次进入一个程序打开最后一个数据库退出后我想要的。

这是一个有点不便于为此创建一个特殊的数据库,这些值存储在里面,因为我只有一对夫妇的变量来存储。

什么是存储这些变量的最简单的方法?

预先感谢您。

回答

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会创建一个新的NSUserDefaults字典,其中包含您在kDefaultDatabaseName中设置为默认数据库的任何字典。

当应用程序完成启动时,成员databaseName采用NSUserDefaults字典中设置的值。这可以是kDefaultDatabaseName或运行应用程序后更新的任何内容。

当你运行你的应用程序,您的用户可能的databaseName值更改为别的东西。

应用程序终止就在中,databaseName值写入NSUserDefaults字典。下次打开应用程序时,databaseName将采用新的更新值。

在将此更新写入字典之前,您不必等待应用程序终止。例如,您可以在用户将databaseName更改为新内容后立即执行此操作。但这取决于你。

相关问题