2012-04-12 14 views
10

मैं एक प्रबंधित दस्तावेज़ openWithCompletionHandler:UIDocument openWithCompletionHandler iOS डिवाइस पर पूरा नहीं करने

समस्या मैं भर में आ रहा हूँ कि यह सिम्युलेटर पर ठीक काम करता है है

का उपयोग कर खोलने की कोशिश कर रहा हूँ, लेकिन जब मैं अपने iPhone 4 पूरा होने पर उसकी जांच हैंडलर कभी खत्म नहीं होता है। कोड इस तरह दिखता है:

[theManagedDocument openWithCompletionHandler:^(BOOL success){ 
    if(success) [self documentIsReady]; 
    if(!success) NSLog(@"Couldn't Open Document"); 
}]; 

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

मुझे यह भी जिक्र करना चाहिए कि ऐसा लगता है कि पहली बार आईफोन पर ऐप चलाने पर यह ठीक से काम करेगा। मैंने fileExistsAtPath: कॉल के साथ एक कथन में यह encapsulated भी है। यह अगर कथन में ठीक है और openWithCompletionHandler: पर कॉल कर रहा है, लेकिन समापन ब्लॉक को कभी भी से निकाल दिया नहीं जाता है।

मैं आईओएस 5.1 और एक्सकोड 4.3.2 का उपयोग कर रहा हूं।

उत्तर

7

मेरे मामले में, मेरे आईपैड को बंद करना और इसे फिर से शुरू करना इस समस्या को "ठीक" करना है। सौभाग्य!

+1

मैंने ऐप को मंजूरी दे दी, सबकुछ फिर से शुरू किया और ऐसा लगता है कि यह बेहतर हो रहा है। इस उत्तर से थोड़ा अधिक काम, लेकिन यह काफी करीब है। अभी भी यह सुनिश्चित नहीं है कि इसका कारण क्या था। –

+1

यह बेहद खराब है कि आपके डिवाइस को कितनी बार पुनरारंभ करना बग को हल करता है। – Anton

2

कॉल करने से पहले प्रबंधित किया गया दस्तावेज़! = Nil कॉल करने का प्रयास करें - यही कारण है कि मैं सोच सकता हूं कि ब्लॉक क्यों निष्पादित नहीं किया जाएगा।

8

मुझे अपने ऐप्स में एक ही समस्या का अनुभव हुआ है जो डेटा साझा करने के लिए iCloud का उपयोग करता है। मुझे एहसास हुआ कि openWithCompletionHandler: सिर्फ एक निलंबित ऐप द्वारा दस्तावेज़ छोड़ने पर पूरा होने और पूरा होने वाले हैंडलर को कभी कॉल नहीं करता है। यदि यह आपके लिए मामला है, तो आपको यह सुनिश्चित करना चाहिए कि जब आप अपना ऐप पृष्ठभूमि में जाते हैं तो आप दस्तावेज़ बंद कर रहे हैं।

+0

मैंने अनिवार्य रूप से वही व्यवहार अनुभव किया है यदि मैं अपने कस्टम यूआईडी दस्तावेज़ क्लास इंस्टेंस को पूरा करने वाले हैंडलर से रिलीज़ करना भूल जाता हूं। यह सिर्फ खुला रहता है और दूसरी बार लटकता है जब मैं ओपन विथ कॉम्प्लेशन हैंडलर को कॉल करने का प्रयास करता हूं। – vargonian

+0

@ वार्गोनियन यह समझ में आएगा ... सिवाय इसके कि यह समस्या एआरसी (जो स्मृति को संभालती है) के साथ भी होती है। –

0

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

+0

संभवतः, लेकिन मुझे 'सफलता' को झूठी नहीं मिल रही थी। मुझे कुछ भी वापस नहीं मिला था। –

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