2009-04-25 13 views
9

एक लंबे समय तक स्मृति में एक आईफोन अनुप्रयोग में कुछ चर को बचाने का सबसे आसान तरीका क्या है?आईफोन - एप्लिकेशन से उपयोगकर्ता सेटिंग्स को कैसे सहेजना है?

मेरे पास एक ऐसा एप्लिकेशन है जो विभिन्न स्क्लाइट डेटाबेस के साथ काम करता है और मैं एक एप्लिकेशन से बाहर निकलने के बाद अंतिम डेटाबेस खोलने के लिए अंतिम डेटाबेस खोलने के लिए चाहता हूं, जब उपयोगकर्ता फिर से एप्लिकेशन में प्रवेश करता है।

इस उद्देश्य के लिए यह एक विशेष डेटाबेस बनाने और उस मूल्य को स्टोर करने के लिए थोड़ा सुविधाजनक नहीं है, क्योंकि मेरे पास स्टोर करने के लिए केवल कुछ चर हैं।

उन चरों को स्टोर करने का सबसे आसान तरीका क्या है?

अग्रिम धन्यवाद।

उत्तर

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 शब्दकोश बनाता है।

जब एप्लिकेशन लॉन्च हो जाता है, तो सदस्य databaseNameNSUserDefaults शब्दकोश में मान सेट पर ले जाता है। यह kDefaultDatabaseName हो सकता है या जो भी आपके आवेदन को चलाने के बाद अपडेट किया गया है।

जब आप अपना आवेदन चलाते हैं, तो आपका उपयोगकर्ता databaseName का मान किसी और चीज़ में बदल सकता है।

आवेदन समाप्त होने से ठीक पहले, databaseName का मान NSUserDefaults शब्दकोश में लिखा गया है। अगली बार एप्लिकेशन खोला जाएगा, databaseName नया, अपडेट किया गया मान लेगा।

आपको इस अद्यतन को शब्दकोश में लिखने से पहले समाप्त करने की प्रतीक्षा करने की आवश्यकता नहीं है। उदाहरण के लिए, उपयोगकर्ता इसे कुछ नया करने के लिए databaseName बदलने के तुरंत बाद ऐसा कर सकता है। लेकिन यह आप पर निर्भर है।

संबंधित मुद्दे