2009-04-23 16 views
28

मेरे पास मेरे ऐपडिलेगेट में निम्न दो प्रक्रियाएं परिभाषित हैं। बचत सेटिंग्स और लोड सेटिंग्स। मैं ऐपडिडफिनिश लॉन्चिंग विधि में अपनी लोड सेटिंग्स प्रक्रिया को कॉल कर रहा हूं, और सहेजने के बाद बटन को क्लिक करने के बाद, मैं सेटिंग सेटिंग्स में सेविंग सेटिंग्स को कॉल कर रहा हूं।आईफोन एसडीके - लोड/सेव सेटिंग्स

दोनों विधियों को सही समय पर सही समय पर कॉल किया जाता है, सही समय (एक बार), और सही डेटा का उपयोग करना। मेरी सेटिंग्स ऑब्जेक्ट सही डेटा प्राप्त करता है, लेकिन डेटा वास्तव में बचत नहीं प्रतीत होता है। जब मैं लोड कोड चलाता हूं, तो मेरे परिणामी चर खाली वापस आ रहे हैं (शून्य नहीं)।

मैंने एक ही लोडिंग कोड को एक अलग दृश्य में डालने का प्रयास किया और यह ठीक काम करता है, लेकिन किसी कारण से, मुझे अपने ऐप डिलीगेट में परिणाम नहीं मिल रहे हैं।

किसी भी मदद की सराहना की जाएगी।

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
     [window addSubview:navigationController.view]; 
     [window makeKeyAndVisible]; 
     [self loadSettings]; 
     [self setDefaults]; 
} 

-(void)loadSettings{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    settings.masterLocation = [prefs objectForKey:@"masterLocation"]; 
    settings.masterPort = [prefs objectForKey:@"masterPort"]; 
    settings.userName = [prefs objectForKey:@"userName"]; 
    settings.passWord = [prefs objectForKey:@"passWord"]; 
    settings.autoLogin=[prefs objectForKey:@"autoLogin"]; 

    if (settings.autoLogin == nil) 
     [email protected]"N"; 


} 

-(void)saveSettings:(SharedData *)d{ 
    settings=d; 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:settings.masterLocation forKey:@"masterLocation"]; 
    [prefs setObject:settings.masterPort forKey:@"masterPort"]; 
    [prefs setObject:settings.userName forKey:@"userName"]; 
    [prefs setObject:settings.passWord forKey:@"passWord"]; 
    [prefs setObject:settings.autoLogin forKey:@"autoLogin"]; 
} 

उत्तर

29

दोह।

सहेजने में सेटिंग्स, मैं अपने [prefs सिंक्रनाइज़] याद कर रहा था;

+0

स्व लर्नर बिल्ला के लिए धन्यवाद। – Dutchie432

+0

धन्यवाद कि वास्तव में मदद की! – Khattab

+1

"सिंक्रनाइज़" के बजाय "सिंक्रनाइज़ करें" – Manni

1

यह नमूना बनाने के लिए:

//Writing 
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"anInt"]; 
[[NSUserDefaults standardUserDefaults] setDouble:1.2 forKey:@"aDouble"]; 
[[NSUserDefaults standardUserDefaults] setString:@"aString" forKey:@"aString"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

//Reading: 

int i = [[NSUserDefaults standardUserDefaults] integerForKey:@"anInt"]