2012-07-16 21 views
5

का उपयोग करके ऐप को मारने के बाद खोया गया सहेजा गया डेटा मैं अपनी सेटिंग में NSUserDefaults का उपयोग करता हूं। ऐप अच्छी तरह से काम करता है, यहां तक ​​कि मैं घर की कुंजी को पृष्ठभूमि में ऐप करने देता हूं, लेकिन अगर मैं ऐप को मारता हूं, तो NSUserDefaults में डेटा सहेज जाएगा। मेरा कोड यहाँ है। मैंने सिंक्रनाइज़ेशन का उपयोग किया है। पहले इनिशियलाइज़:NSUserDefaults

if (![userDefaults integerForKey: 
      kORFootageAirPlayModeKey]) 
    { 
     [userDefaults setInteger:TRUE forKey:kORFootageAirPlayModeKey]; 
    } 
    [userDefaults synchronize]; 
एक ViewController में

पढ़ें मूल्य आउट: एक कार्रवाई में

airPlayMode = [[NSUserDefaults standardUserDefaults]integerForKey:kORFootageAirPlayModeKey]; 

सेट यह:

- (IBAction)changeAirPlayStatus:(id)sender 
{ 

    if (sender) 
    { 
     airPlayMode = [sender tag]; 

     [[NSUserDefaults standardUserDefaults] setInteger:airPlayMode forKey:kORFootageAirPlayModeKey]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
..... 

}

उत्तर

1

मैं एक नहीं दिख रहा है इसके लिए कारण।

क्या आपने लाइब्रेरी/कैश के तहत सिम्युलेटर निर्देशिका में चेक किया है, वहां आपके NSUserDefaults को सहेजने वाला प्लिस्ट है। जांचें कि क्या यह सही ढंग से लिखा गया है।

और कृपया, setInteger का उपयोग न करें: TRUE। यह कई सारे स्तरों पर गलत है। SetBOOL का उपयोग करें: इसके बजाए हाँ। या setInteger: 1।

+1

सेटबटर को सेटबूल में बदलने के बाद, सब ठीक हो जाता है। तो मजबूर बल आईओएस पागल हो। और प्लेलिस्ट फ़ाइल का स्थान निम्नानुसार है:/उपयोगकर्ता/सेब/लाइब्रेरी/एप्लिकेशन सपोर्ट/आईफोन सिम्युलेटर/5.1/एप्लीकेशन/xxxx-xxxxx-xxxxx/लाइब्रेरी/प्राथमिकताएं/com.yourappname.plist –

1

आपके डेटा को सहेजने के लिए यह सुनिश्चित करने का सबसे अच्छा तरीका है -synchronizeapplicationWillTerminate: में और applicationWillResignActive: में अपने आवेदन प्रतिनिधि में कॉल करें।

संपादित करें:

इसके अलावा, setInteger उपयोग के बारे में steipete की टिप्पणी: सही accurate- उपयोग setBool हैं: हाँ बजाय।

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