2011-04-29 19 views
7

मैंने NSDate के फ़ंक्शन को देखा है। क्या मैं अंतराल को डिस्क पर संग्रहीत करने के लिए इस फ़ंक्शन का उपयोग कर सकता हूं और फिर इसे मूल के समान मान के साथ NSDate पर वापस कर सकता हूं? मैं सावधान हूं कि संदर्भ या अंतराल मशीनों के बीच भिन्न हो सकता है और दूसरे कंप्यूटर पर अलग-अलग आ सकता है?डिस्क पर nsdate सहेजें

उत्तर

29

एनएसडीएटी को एनएसडीएटी इंस्टेंस के रूप में संग्रहीत किया जा सकता है और एनएसडीटा को आसानी से डिस्क से पढ़ने/पढ़ने के लिए लिखा जा सकता है।

// Create and store it 
NSDate * date = [NSDate date]; 
NSData * dateData = [NSKeyedArchiver archivedDataWithRootObject:date]; 
[dateData writeToFile:@"/Some/path/to/file.dat" atomically:NO]; 

// Now bring it back 
NSData * restoredDateData = [NSData dataWithContentsOfFile:@"/Some/path/to/file.dat"]; 
NSDate * restoredDate = [NSKeyedUnarchiver unarchiveObjectWithData:restoredDateData]; 

कोई त्रुटि जांच नहीं की जाती है। उससे बेहतर करो। ;-)

+1

NSKeyedArchiver सीधे NSData के बिना फ़ाइल में भी लिख सकता है। –

+1

+ archiveRootObject: toFile: - true। –

+0

काम नहीं करता है, यह कहता है: - [NSKeyedUnarchiver initForReadingWithData:]: डेटा न्यूल – Idan

2

वैकल्पिक रूप से, यदि आप timeIntervalSinceReferenceDate के परिणाम को स्टोर करना चाहते हैं तो आप इसे एनएसएनंबर में डबल के रूप में स्टोर कर सकते हैं और फिर इसे यहोशू के NSKeyedArchiver विधि का उपयोग करके डिस्क पर सहेज सकते हैं।

+0

या आप संग्रह के साथ परेशान किए बिना डबल के 8 बाइट्स लिख सकते हैं। – JWWalker

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