2017-05-15 5 views
5

जो मैं समझता हूं, UIDocument कक्षा फ़ाइल में सहेजे गए परिवर्तनों को ट्रैक कर सकती है और फ़ाइल को लॉक भी कर सकती है ताकि इसे एक से अधिक व्यक्ति द्वारा चेक आउट नहीं किया जा सके। लेकिन क्या होता है यदि उपयोगकर्ता बल ऐप को सहेजने के बिना छोड़ देता है या ऐप क्रैश हो जाता है? मैं UIDocument में सहेजे गए परिवर्तनों को पुनर्प्राप्त करने के बारे में कैसे जाउंगा ताकि जब ऐप फिर से लॉन्च हो जाए तो यह हाल ही में सहेजे गए परिवर्तनों के साथ UIDocument को फिर से खोल देगा? क्या मुझे बदलने से पहले प्रत्येक फ़ाइल की डुप्लिकेट प्रतियां बनाने की आवश्यकता है और जब तक उपयोगकर्ता परिवर्तनों को सहेजता है तब तक अस्थायी डुप्लिकेट को बदलता है? या ऐप्पल एक सरल कार्यान्वयन प्रदान करता है? मैंने एन्कोडिंग और Data फ़ाइल सामग्री और undoManager प्रत्येक UIDocument आवृत्ति को कैश के रूप में समय-समय पर संग्रहीत करने पर भी विचार किया है। क्या इससे काम हो जायेगा?यूआईडी दस्तावेज ऐप क्रैश/फोर्स पर असुरक्षित परिवर्तनों को पुनर्प्राप्त करें

उत्तर

1

UIDocument और UIManagedDocument अन्य प्रणाली की कमी (उदाहरण के लिए सम्मान से ट्रैकिंग (एक समारोह जहां सच लौटा सकते हैं या दस्तावेज़ बदल गया है बुला) और बचत डिस्क में परिवर्तन automagic परिवर्तन कार्य करें: यदि किसी अन्य प्रक्रिया को पढ़ने के लिए कोशिश कर रहा है फ़ाइल)। यदि ऐप्पल बचत करता है, तो वह बहुत ही सुरक्षित तरीके से है, यदि आप बेस क्लास विधियों को ओवरराइड नहीं करते हैं। जब सेव ऑपरेशन ट्रिगर होता है, तो ऐप्पल एक अस्थायी फ़ाइल में सहेजता है और यदि सहेजना सफलतापूर्वक एक त्वरित नाम बदल जाता है और मूल फ़ाइल को हटा दिया जाता है (आईआईआरसी का नाम बदलना/हटाना परमाणु है, या परमाणु के पास है)। आप मान सकते हैं कि सहेजने का ऑपरेशन सभी मामलों के 99.99% के लिए फाइल सिस्टम में दूषित फ़ाइल नहीं छोड़ता है।

ऐप्पल ट्रिगर्स विशिष्ट बिंदुओं पर पृष्ठभूमि में संचालन को सहेजता है (जैसे: टाइम आधारित, ऐप पृष्ठभूमि में स्विच किया जाता है, इससे पहले कि अन्य प्रक्रिया फ़ाइल तक पहुंचने का प्रयास करे, ...), लेकिन मुझे कोई स्पष्ट बयान नहीं मिला कि क्या होता है जब आवेदन बल छोड़ दिया जाता है।

उसने कहा, तर्क और सामान्य ज्ञान मुझे बताता है कि यदि आप किसी एप्लिकेशन को छोड़ने के लिए मजबूर करते हैं, तो वर्तमान दस्तावेज़ स्थिति सहेजा नहीं जा सकता है। बल-छोड़ने के लिए मैन्युअल रूप से "त्वरित बचत" को लागू करने से तकनीकी रूप से व्यवहार्य नहीं हो सकता है। आवधिक पृष्ठभूमि सहेजने का ऑपरेशन (जैसे यूआईडी दस्तावेज पहले से ही करता है) सबसे अच्छी रणनीति हो सकती है।

पूर्ववत प्रबंधक की स्थिति को सहेजने के बारे में: यह UIDocument को सहेजने के समान तकनीकी समस्या होगी। कोई घटना या कुछ भी नहीं है जो एप्लिकेशन को बताता है कि यह बल-छोड़ने वाला है।

आपको Apple Documentation पढ़ना चाहिए। यह बहुत लंबा है लेकिन यह प्रक्रिया को और विस्तार से बताता है। ऐप्पल लगाए गए रणनीति को लागू करने के लिए आपकी सलाह होगी। ये रणनीतियों ध्वनि हैं, और ऐप्पल पारिस्थितिक तंत्र में और उनके उपयोगकर्ताओं के लिए कई अनुप्रयोगों के लिए काम करते हैं। इसके शीर्ष पर, आपके पास कम कार्यान्वयन लागत और स्वैच्छिक सुधार (जब ऐप्पल उनके कार्यान्वयन को अपडेट करता है)।

+0

आपकी सिफारिशें एक तरफ- मैं उपयोगकर्ता को सहेजने का विकल्प चुनने तक दस्तावेज़ में सहेजे गए परिवर्तनों को अनुमति देने के बारे में कैसे जाउंगा, जबकि किसी भी सहेजे गए परिवर्तनों को पुनर्प्राप्त नहीं कर रहा हूं, जैसे कंप्यूटर बंद हो जाता है? –

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