मुझे लगता है कि यह बहुत स्पष्ट है, लेकिन मेरे पास डेटा लोड करने के बारे में कोई सवाल है। यदि पुस्तकालय.dat नामक एक फ़ाइल है जो ऐप में ऑब्जेक्ट्स के बारे में सभी प्रकार की जानकारी संग्रहीत करती है। यह सभी अच्छी तरह से स्थापित है (initWithCoder और encodeWithCoder विधियों आदि के संदर्भ में), लेकिन मैं बस सोच रहा था कि क्या होता है यदि library.dat कभी दूषित हो जाता है। मैंने इसे थोड़ा सा भ्रष्ट कर दिया और ऐप फिर दुर्घटनाग्रस्त हो जाएगा। क्या दुर्घटना को रोकने का कोई तरीका है? क्या मैं इसे लोड करने से पहले एक फाइल का परीक्षण कर सकता हूं?NSKeyedUnarchiver - क्रैश को रोकने के लिए कैसे करें
-(void)loadLibraryDat {
NSLog(@"loadLibraryDat...");
NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:@"library.dat"];
// if the app crashes here, there is no way for the user to get the app running- except by deleting and re-installing it...
self.libraryDat = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
}
मैं * NSInvalidUnarchiveOperationException पर एक नज़र था, लेकिन पता नहीं कैसे मैं अपने कोड में यह लागू करना चाहिए है: यहाँ बिट जो संभवतः बहुत घातक हो सकती है है। मैं किसी भी उदाहरण के लिए आभारी रहूंगा। अग्रिम में धन्यवाद!
उत्तर दिया है यह पुष्टि करने के लिए बहुत कुछ है कि यह इसे संभालने का आधिकारिक तरीका है। –
NSInvalidUnarchiveOperationException एक स्ट्रिंग है, अपवाद की कक्षा नहीं। तो मुझे लगता है कि आपको एनएसईएक्सप्शन पकड़ना है, फिर उसके नाम के खिलाफ जांच करें ...? –