2011-10-13 10 views
5

मैं एक ऐप बना रहा हूं जिसमें ऐप पहली बार लॉन्च होने पर एक प्लिस्ट बनाना होगा। बाद में मैं बाद में इनपुट के विवरण को संग्रहीत करने के लिए प्लिस्ट का उपयोग करने जा रहा हूं। मैं ऐप के पहले लॉन्च का पता कैसे लगा सकता हूं? मैं NSUserDefaults के साथ प्रयोग कर रहा था लेकिन मुझे लगता है कि मैं कुछ गलत कर रहा हूं।ऐप के पहले कभी भी चलाने का पता लगाने

उत्तर

15

आप NSUserDefaults के साथ ऐसा कर सकते हैं। लेकिन संस्करण संख्या से सावधान रहें।

निम्न कार्य करें:

NSString *bundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; 

NSString *appFirstStartOfVersionKey = [NSString stringWithFormat:@"first_start_%@", bundleVersion]; 

NSNumber *alreadyStartedOnVersion = [[NSUserDefaults standardUserDefaults] objectForKey:appFirstStartOfVersionKey]; 
if(!alreadyStartedOnVersion || [alreadyStartedOnVersion boolValue] == NO) { 
    [self firstStartCode]; 
    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:appFirstStartOfVersionKey]; 
} 

चयनकर्ता firstStartCode केवल बहुत पहली बार चलाने पर प्रत्येक आवेदन संस्करण के लिए समय पर बुलाया जाएगा।

ठीक है?

+0

+1 इस तरह से मैं हमेशा ऐसा करता हूं। –

2

मुझे पहले रन के संकेत को स्टोर करने के लिए NSUserDefaults का उपयोग करना पसंद है।

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if (![defaults objectForKey:@"firstRun"]) 
    [defaults setObject:[NSDate date] forKey:@"firstRun"]; 

[[NSUserDefaults standardUserDefaults] synchronize]; 

तो आप इसके लिए परीक्षण कर सकते हैं बाद में ...

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];   
if([defaults objectForKey:@"firstRun"])   
{ 
    // do something or not... 
} 

से लिया: Best way to check if an iPhone app is running for the first time

+0

तो कोड के पहले खंड, मैं इसे एप्लिकेशन प्रतिनिधि में didFinishLaunching के तहत रख सकता हूं? – theNoobProgrammer

+0

हां जो काम करना चाहिए। – CamelSlack

2

आप उपयोग कर सकते हैं निम्नलिखित:

-(void) firstLaunch { 
    //Code goes here 
} 

-(void) firstLaunchCheck { 
    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"]) { 
     [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"]; 
     [self firstLaunch]; 
    } 
}