मेरे पास एक कक्षा है जो NSCoder
/NSKeyedArchiver
और NSKeyedUnarchiver
के साथ क्रमबद्ध और deserializes है। मेरे पास यूनिट परीक्षण हैं जो मेरे धारावाहिक प्रारूप के अंदर विभिन्न त्रुटियों के संचालन की जांच के लिए डिज़ाइन किए गए हैं (जो एक साधारण संग्रह नहीं है लेकिन इसमें अभिलेखागार हैं)।NSKeyedUnarchiver unarchiveObjectWithData वापस लौटना
हालांकि, चूंकि मैंने स्विफ्ट 2/आईओएस 9 में अपग्रेड किया है, परीक्षण कुछ असामान्य व्यवहार प्रदर्शित कर रहे हैं। पहले, अमान्य अभिलेखागार के लिए परीक्षण एक अमान्य संग्रह को deserializing के रूप में विफल रहा एक उद्देश्य-सी अपवाद फेंक दिया, दस्तावेज़ राज्य के रूप में, जो प्रोग्राम को दुर्घटनाग्रस्त कर दिया क्योंकि स्विफ्ट उन्हें पकड़ नहीं सकता है। यह ठीक है, मैं भविष्य में किसी बिंदु पर परीक्षण को ठीक करना चाहता था।
अब, परीक्षण पास हो जाता है। जब मेरे यादृच्छिक या निर्धारक कचरे को खिलाया जाता है, तो मुझे अपवाद के बजाय unarchiveObjectWithData
से nil
वापस प्राप्त होता है। मैंने इस विधि के लिए दस्तावेज़ों की जांच की है और कोई व्यवहार परिवर्तन सूचीबद्ध नहीं है।
सचमुच, मुझे लगता है कि यह व्यवहार बेहद संदिग्ध हो गया है क्योंकि इस बदलाव के बारे में कहीं भी कोई उल्लेख नहीं है या नहीं। मेरे पहले विफल यूनिट परीक्षण अभी किसी भी स्पष्ट कारण से गुजर रहे हैं क्यों।
तो क्या यह नया अपेक्षित व्यवहार है (यह nil
देता है)? यदि नहीं, तो मैं अवैध संग्रह के लिए nil
की बजाय वास्तविक अपेक्षित व्यवहार (Obj-C अपवाद) कैसे प्राप्त कर सकता हूं?
इसके लिए धन्यवाद। मुझे लगता है कि मैं NSKeyedArchiver का निर्माण करूंगा और मैन्युअल रूप से उस ओबीजेसी अपवाद को संभाल सकता हूं, ताकि मैं इस अजीब गैर-दस्तावेज वाले आधा-लागू चरण में नहीं हूं। – Puppy