मैंने NSDate
के फ़ंक्शन को देखा है। क्या मैं अंतराल को डिस्क पर संग्रहीत करने के लिए इस फ़ंक्शन का उपयोग कर सकता हूं और फिर इसे मूल के समान मान के साथ NSDate
पर वापस कर सकता हूं? मैं सावधान हूं कि संदर्भ या अंतराल मशीनों के बीच भिन्न हो सकता है और दूसरे कंप्यूटर पर अलग-अलग आ सकता है?डिस्क पर nsdate सहेजें
7
A
उत्तर
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];
कोई त्रुटि जांच नहीं की जाती है। उससे बेहतर करो। ;-)
2
वैकल्पिक रूप से, यदि आप timeIntervalSinceReferenceDate
के परिणाम को स्टोर करना चाहते हैं तो आप इसे एनएसएनंबर में डबल के रूप में स्टोर कर सकते हैं और फिर इसे यहोशू के NSKeyedArchiver विधि का उपयोग करके डिस्क पर सहेज सकते हैं।
+0
या आप संग्रह के साथ परेशान किए बिना डबल के 8 बाइट्स लिख सकते हैं। – JWWalker
NSKeyedArchiver सीधे NSData के बिना फ़ाइल में भी लिख सकता है। –
+ archiveRootObject: toFile: - true। –
काम नहीं करता है, यह कहता है: - [NSKeyedUnarchiver initForReadingWithData:]: डेटा न्यूल – Idan