2012-01-23 9 views
5

मैं अपने ऐप में डेटा स्टोर करने के लिए एक प्लिस्ट का उपयोग कर रहा हूं। मैं बिना किसी समस्या के प्लिस्ट से लिखने और पढ़ने में सक्षम हूं। मैंने एक्सकोड में इस प्लिस्ट को बनाया, संख्याओं, शब्दकोशों और सरणी की पंक्तियों को जोड़कर। हालांकि, मैं मूल स्थिति में प्लेस्ट को रीसेट करने में सक्षम होना चाहता हूं, और प्लिस्ट में प्रत्येक प्रविष्टि के लिए 0 या शून्य मूल्य लिखने से ऐसा करने का एक आसान तरीका होना चाहिए। तो अपनी प्रारंभिक डिफ़ॉल्ट स्थिति में प्लेस्ट को रीसेट करने का सबसे आसान तरीका क्या है?एक्सकोड में बनाए गए प्लिस्ट में डेटा को मैं कैसे साफ़ करूं?

उत्तर

10

सरल बात इस तरह, NSFileManager का उपयोग कर फ़ाइल को नष्ट करने के लिए किया जाएगा:

[[NSFileManager defaultManager] removeItemAtPath:plistPath error:NULL]; 

या यदि आप कि, plist संभालने एक शब्दकोश है क्या करने के लिए नहीं करना चाहते हैं, बस से एक लोड अपने आवेदन बंडल और फिर ऊपर लिख अपने दस्तावेज़ों में से एक है, इस तरह:

NSDictionary *originalPlist = [NSDictionary dictionaryWithContentsOfFile:bundleFile]; 
[originalPlist writeToFile:documentsFile atomically:YES]; 

कौन सा मूल फ़ाइल के साथ सहेजी गई फ़ाइल ऊपर लिख देगा।

+0

धन्यवाद जो मैं चाहता था। मुझे लगता है कि मुझे किसी को सीधे इसे समझाने के लिए किसी की जरूरत है। – gurooj

+0

क्या प्लिस्ट फ़ाइल से एक ही एंट्री को मिटाना संभव है? असल में मैं अपनी प्लिस्ट में तारीखों को संग्रहीत कर रहा हूं और मैं चाहता हूं कि, जैसा कि प्लास्ट की तिथि समाप्त हो गई है, उस तारीख/प्रविष्टि को प्लेस्ट से हटा दिया जाना चाहिए और प्लिस्ट को मिलना चाहिए ताज़ा हो गया। मैं यह कैसे कर सकता हूँ? –

+1

आप इसे सीधे प्लेस्ट से नहीं हटाएंगे, आप इसे mutableCopy विधि का उपयोग करके NSMutableDictionary बनाकर और फिर निकालें ऑब्जेक्टफोरकी: विधि का उपयोग करके शब्दकोश से हटा देंगे। फिर बस पुराने प्लिस्ट के शीर्ष पर नया शब्दकोश सहेजें। –

1
NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"mobile-watchlist.plist"]; 
    [fileManager removeItemAtPath: fullPath error:NULL]; 
0

आप अपने प्लिस्ट का नाम बदलने का भी प्रयास कर सकते हैं। मुझे लगता है कि कम से कम काम करता है।

+0

फिर, पुराने के बारे में क्या ??? –

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