2009-04-25 92 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更改爲新內容後立即執行此操作。但這取決於你。

相關問題