2012-01-12 5 views
32

मैं वर्तमान में सैंडबॉक्स वाला ऐप विकसित कर रहा हूं। यह एक मूल पाठ संपादक के रूप में कार्य करता है। हाल ही में, मैं परीक्षण करना चाहता था कि जब मैं अपने ऐप में एक फ़ाइल खोलता हूं और एक ही ऐप एक ही समय में करता हूं, तो एक ऐप में अपडेट करें, फिर दूसरे में अपडेट देखें। मैं अपने वैकल्पिक संपादकों के रूप में Coda या BBEdit का उपयोग कर रहा हूं। अगर मैं सैंडबॉक्सिंग बंद कर देता हूं - तो यह समस्या मौजूद नहीं है। हालांकि, चूंकि ऐप्स को 1 मार्च तक सैंडबॉक्स किया जाना आवश्यक है, इसलिए मैं प्रतीक्षा करने और देखने के बजाए समाधान लागू करना चाहता हूं।मैक सैंडबॉक्सेड ऐप अन्य ऐप्स को फ़ाइल अनुमतियां खो देता है

जब मैं दोनों फाइलें खोलता हूं और अपने ऐप में एक संपादन करता हूं और फिर दूसरे ऐप पर स्विच करता हूं, तो बदलाव प्रतिबिंबित होते हैं ताकि उन संपादकों के संस्करण को मेरे ऐप से बचाया जा सके। हालांकि, अगर मैं अपने ऐप से बचत करने के लिए बातचीत करता हूं और फिर मेरा जाता हूं - कोई खुशी नहीं। किसी भी कार्रवाई के बिना, कंसोल दो विशिष्ट त्रुटियों की रिपोर्ट करता है: deny file-issue-extension और deny file-write-data। ऐप दस्तावेज़ को संपादित करने के लिए विशेषाधिकार खो रहा प्रतीत होता है क्योंकि दस्तावेज़ मेरे ऐप में खोले जाने के बाद बाहरी संपादक द्वारा बदला गया था। अगर मैं अपने ऐप में फ़ाइल को सहेजने का प्रयास करता हूं, तो यह दस्तावेज़ को डुप्लिकेट करने के लिए कहता है क्योंकि यह मूल दस्तावेज़ तक पहुंच खो गया है। यह दूसरी तरफ नहीं होता है क्योंकि उन ऐप्स को सैंडबॉक्स नहीं किया गया है और इसके लिए मेरे ऐप की अनुमति नहीं है। यह भी प्रकट नहीं होता है कि यदि आप इस व्यवहार को नहीं चाहते हैं तो आप अन्य ऐप को परिवर्तन करने से रोक सकते हैं।

developer.apple.com पर प्रलेखन इस प्रकार की स्थिति का कुछ भी उल्लेख नहीं करता है। मुझे यकीन नहीं है कि यह इरादा व्यवहार है या नहीं। यदि ऐसा है, तो मैं बस अपने उपयोगकर्ता को बता सकता हूं कि दस्तावेज़ अनुमतियां खो गई हैं और उन्हें या तो एक नया संस्करण सहेजना चाहिए या फ़ाइल को फिर से खोलना चाहिए। यदि यह इरादा व्यवहार नहीं है, तो NSDocument API में कौन सी विधि खो जाने के बाद फ़ाइल को अनुमति देगी? मुझे लगता है कि जवाब पूर्व है, यह इरादा है, लेकिन क्या कोई पुष्टि कर सकता है और दस्तावेज है?

+0

मैं इस मुद्दे के आसपास कोडिंग समाप्त कर दिया। यदि ऐप फ़ाइल को अनुमति खो देता है, तो मैं उपयोगकर्ता को अपने दस्तावेज़ को एक नई फ़ाइल या बंद करने के लिए कहता हूं। लेकिन, ऐसा लगता है कि एक ऐप किसी अन्य से अनुमतियों को "चोरी" करने में सक्षम होना चाहिए। मुझे लगता है कि यह वह कीमत है जिसे आप एक सैंडबॉक्स के लिए भुगतान करते हैं। –

+0

मुझे ऐप्पल का डिफ़ॉल्ट संदेश मिला कि दस्तावेज़ को ऐप के बाहर संपादित किया गया था। ऐसा लगता है कि यह इरादा है। –

+3

कृपया एक रडार फ़ाइल करें (और शायद इसे [ओपनराडर] पर दस्तावेज करें (http://openradar.appspot.com/)) - इसके वर्तमान रूप में सैंडबॉक्सिंग के साथ कई समस्याएं हैं, और ऐप्पल की अधिक बग रिपोर्ट जितनी अधिक हो सकती है, उतनी अधिक संभावना वे sandboxing को ठीक/स्थगित/वापस लेना है। – fzwo

उत्तर

1

कोई कार्रवाई करने के बिना, कंसोल दो विशिष्ट त्रुटियों की रिपोर्ट करता है: फ़ाइल-समस्या-एक्सटेंशन से इनकार करें और फ़ाइल-लेखन-डेटा से इनकार करें। ऐप दस्तावेज़ को संपादित करने के लिए विशेषाधिकार खो रहा प्रतीत होता है क्योंकि दस्तावेज़ मेरे ऐप में खोले जाने के बाद बाहरी संपादक द्वारा बदला गया था। अगर मैं अपने अनुप्रयोग में फ़ाइल को बचाने की कोशिश है, यह दस्तावेज़ नकल करने क्योंकि यह मूल दस्तावेज़

एक स्थिति की तरह इस फ़ाइल को अधिलेखित नहीं है में सही व्यवहार के लिए उपयोग खो दिया है, लेकिन संकेत करने के लिए पूछता है उपयोगकर्ता अगर वे दस्तावेज़ को फिर से लोड करना चाहते हैं, तो यदि इसे पुनः लोड करें और फिर इसे लिखें।

ओएस एक फ़ाइल पर एक अंधेरे लिखने की इजाजत नहीं देकर सही काम कर रहा है।

NSFilePresenter - (शून्य) प्रस्तुत किया गया यह देखने के लिए कि यह बदल गया है या नहीं। फ़ाइल को दोबारा पढ़ें और फिर देखें कि क्या आप इसे सहेज सकते हैं। आप नहीं कहते कि आपको फ़ाइल पर पढ़ने से इंकार कर दिया गया है।

इसके अलावा, चूंकि आपने किसी भी कोड को पोस्ट किया है, इसलिए यह दिखाने में सहायक हो सकता है कि आप फ़ाइल का उपयोग करने और इसे सहेजने के लिए किस कोड का उपयोग कर रहे हैं। एनएसडी दस्तावेज़ ने सैंडबॉक्स में कुछ प्रकार के फाइल परिवर्तनों के लिए हैंडलिंग में बनाया है।

+0

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

+0

दस्तावेज को पुनः लोड करने के लिए आपका सुझाव शायद सैंडबॉक्स वाले वातावरण में एकमात्र सही समाधान है। मुझे नहीं लगता कि यह हमेशा ऐप उपयोगकर्ताओं के लिए सबसे अच्छा समाधान होगा, लेकिन sandboxed बनाम sandboxed तर्क नहीं है मैं इस सवाल के साथ कुछ हासिल करने का इरादा नहीं है। मैं इसे उत्तर के रूप में चिह्नित करूंगा। आपके सुझावों के लिए धन्यवाद! –

0

अपने ऐप ScottEdit और अपने प्रतिद्वंद्वी StackEdit

रूप में कहते हैं वहाँ कई चीजें चल रहा हो सकता है की सुविधा देता है। एनएसडी दस्तावेज़ में लॉक डॉक्यूमेंट विधि है। StackEdit ने दस्तावेज़ को लॉक कर दिया हो और सहेजने के बाद इसे अनलॉक नहीं किया हो। यदि आप ऐप छोड़ देते हैं, तो फ़ाइल को अनलॉक किया जाना चाहिए और आपके ऐप के लिए उपलब्ध होना चाहिए। यदि ऐसा है, तो आपको फ़ाइल की विशेषताएँ Kqueue या किसी अन्य का उपयोग करते समय एक अधिसूचना बनाने की आवश्यकता होगी।

यदि अन्य ऐप आपके ऐप तक पहुंच को अवरुद्ध कर रहा है। आप उस डेवलपर को एक ईमेल भेज सकते हैं और उसे अपने ऐप को अपडेट करने के लिए कह सकते हैं ताकि सहेजने के बाद दस्तावेज़ को अनलॉक कर दिया जा सके। यह अंतिम चरण नोटिफिकेशन सेट अप करने के अतिरिक्त है क्योंकि एक और डेवलपर साथ आ सकता है और वही काम करता है (आपके ऐप को तोड़ना)।

+1

"आप उस डेवलपर को एक ईमेल भेज सकते हैं और उसे अपने ऐप को अपडेट करने के लिए कह सकते हैं ताकि यह सहेजने के बाद दस्तावेज़ को अनलॉक कर सके।" एक व्यवहार्य समाधान नहीं है। टेक्स्ट फाइलों और वहां के सभी टेक्स्ट एडिटर्स के साथ काम करना मानें - यह बहुत सारे ईमेल हैं। यह लॉक डॉक्यूमेंट समस्या या टूटी हुई ऐप समस्या नहीं है। यह एक सैंडबॉक्स अनुमति समस्या है। सैंडबॉक्स एप्लिकेशन को बाहरी रूप से संशोधित होने के बाद फ़ाइल को संपादित करने की अनुमति नहीं देगा। –

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