यदि आपका एनएसडी दस्तावेज़ सबक्लास इन-प्लेस ऑटोसविंग का समर्थन करता है, और सभी लिखने योग्य प्रकार भी पठनीय (जैसा कि होना चाहिए) हैं, तो मैं पहले से प्रदत्त प्रकार-रूपांतरण वर्कफ़्लो का उपयोग करने की अनुशंसा करता हूं, जहां उपयोगकर्ता को "डुप्लिकेट" का उपयोग करना चाहिए "सहेजें" द्वारा।
इस वर्कफ़्लो में, जब उपयोगकर्ता दस्तावेज़ को "डुप्लिकेट" करता है, तो इसे एक अस्थायी फ़ाइल के रूप में लिखा/कॉपी किया जाता है (जहां स्वत: सहेजी गई फ़ाइलें सहेजी जाती हैं) एक शीर्षक रहित दस्तावेज़ के रूप में। जब उपयोगकर्ता दस्तावेज़ विंडो बंद कर देता है, तो ऐप उसे दस्तावेज़ को सहेजने या हटाने के लिए सुझाव देता है। चूंकि दस्तावेज़ में अभी तक कोई स्थायी URL नहीं है, इसलिए एक NSSavePanel एक एक्सेसरी व्यू के साथ दिखाई देगा जो उपयोगकर्ता को दस्तावेज़ प्रकार का चयन करने देता है।
इस समाधान में सब कुछ पहले से ही कोको द्वारा प्रदान किया गया है और आपको विशेष "निर्यात" कार्यक्षमता का समर्थन करने के लिए कुछ भी करने की ज़रूरत नहीं है क्योंकि उपयोगकर्ता "सहेजें" के बाद "डुप्लिकेट" का उपयोग कर सकता है। typeName
तर्क (जैसा कि स्वेन ने कहा) के अनुसार आपको केवल dataOfType:error:
से fileWrapperOfType:error:
में अपने दस्तावेज़ को सभी लिखने योग्य प्रकारों में सहेजने में सक्षम होना चाहिए।
यहां का लाभ यह है कि उपयोगकर्ता को फ़ाइल को बंद करने के दौरान ही यूआरएल चुनना होता है (और इसे हटाने के लिए चुनता नहीं है) - और दस्तावेज़-आधारित ऐप्स में नए वर्कफ़्लो के साथ संगत है जहां "के रूप में सहेजें" ऑपरेशन "डुप्लिकेट" के बाद "सेव" द्वारा प्रतिस्थापित किया गया है।
ध्यान दें कि आपको यह भी सुनिश्चित करना होगा कि आप गैर-लेखन योग्य दस्तावेज़ों के दस्तावेज़ों को डुप्लिकेट कर सकते हैं (आप इसे writeSafelyToURL:ofType:forSaveOperation:error:
का उपयोग करने के बजाय मूल फ़ाइल की प्रतिलिपि बनाकर प्राप्त कर सकते हैं)।
स्रोत
2013-01-27 09:27:20
क्या इसका मतलब यह है कि प्रत्येक प्रकार के लिए अलग-अलग उप-वर्ग होने की अनुशंसा नहीं की जाती है? – hpique
बिल्कुल। आपके 'एनएसडी दस्तावेज़' वर्ग को ऑन-डिस्क फ़ाइल प्रारूप से स्वतंत्र एक निश्चित प्रकार का दस्तावेज़ (एक टेक्स्ट दस्तावेज़, एक चित्र, ...) का प्रतिनिधित्व करना चाहिए। – Sven
प्रलेखन (आपके द्वारा प्रदान किया गया एक ही लिंक) में "एकाधिक दस्तावेज़ प्रकार एकाधिक NSDocument सबक्लास का उपयोग करें" नामक एक अनुभाग है। इससे मैं आपको केवल एक ही प्रकार के एनएसडी दस्तावेज़ सबक्लास का समर्थन करना चाहिए। – hpique