मेरी हेडर फाइल में, मैं निम्नलिखित जोड़ सकते हैं:
@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
शब्दकोश बनाता है।
जब एप्लिकेशन लॉन्च हो जाता है, तो सदस्य databaseName
NSUserDefaults
शब्दकोश में मान सेट पर ले जाता है। यह kDefaultDatabaseName
हो सकता है या जो भी आपके आवेदन को चलाने के बाद अपडेट किया गया है।
जब आप अपना आवेदन चलाते हैं, तो आपका उपयोगकर्ता databaseName
का मान किसी और चीज़ में बदल सकता है।
आवेदन समाप्त होने से ठीक पहले, databaseName
का मान NSUserDefaults
शब्दकोश में लिखा गया है। अगली बार एप्लिकेशन खोला जाएगा, databaseName
नया, अपडेट किया गया मान लेगा।
आपको इस अद्यतन को शब्दकोश में लिखने से पहले समाप्त करने की प्रतीक्षा करने की आवश्यकता नहीं है। उदाहरण के लिए, उपयोगकर्ता इसे कुछ नया करने के लिए databaseName
बदलने के तुरंत बाद ऐसा कर सकता है। लेकिन यह आप पर निर्भर है।
स्रोत
2009-04-25 20:22:04