Wednesday 15 June 2011

iphone - UITableView Removing empty section after -tableView:moveRowAtIndexPath:ToIndexPath: causes crash -


मैं - (शून्य) तालिकादृश्य का उपयोग कर रहा हूं: (UITableView *) तालिका दृश्य हिलूवाएटएंडएपैथ: (NSIndexPath *) से इंडैक्सपाथ ToIndexPath: (NSIndexPath *) toIndexPath;

फ़ंक्शन, और मुझे पता लगा है कि fromIndexPath सेक्शन खाली है I यदि यह है, तो मेरे पास निम्न कोड है:

  NSString * से पता = [वर्गों ऑब्जेक्टआर्थइंडएक्स: fromInexPath.section]; [SavedTable शुरू करें अद्यतन]; NSIndexSet * अनुक्रमणिकासंकेतण [[NSIndexSet सूचकांकसेटसेटइंडएक्स: [वर्गों indexOfObject: fromSection]]; [सहेजे गए टेबल हटाएंसंकेतः सूचकांक के साथ-साथ पंक्तियाँअनिमेशन: UITableViewRowAnimationFade]; [वर्गों को निकालना वस्तु: सेशन]; [SavedTable एंडअपडेट्स];   

लेकिन यह ऐप को निम्न त्रुटि के कारण क्रैश करता है:

* बिना किसी अपवाद के 'एफ़आईएस' को रद्द करने के कारण 'NSInternalInconsistencyException', कारण: 'अमान्य अद्यतन: अनुभाग 0 में पंक्तियों की अमान्य संख्या। अद्यतन (0) के बाद किसी मौजूदा अनुभाग में निहित पंक्तियों की संख्या अद्यतन (4) से पहले उस अनुभाग में निहित पंक्तियों की संख्या के बराबर होनी चाहिए, प्लस या माइनस उस खंड (0 डाला, 0 हटाए गए) से हटाए गए या हटाए गए पंक्तियों की संख्या और अधिक या घटा उस खंड (या में 0 में चले गए, 0 बाहर चले गए) की ओर चले गये या उससे बाहर की पंक्तियों की संख्या। '

त्रुटि क्या कहती है, ऐसा लगता है कि जब मैं (पहले) सेक्शन को निकालता हूं, तो यह रजिस्टर नहीं होता है, इसलिए यह सोचता है कि दूसरे भाग से 4 पंक्तियां पहले अनुभाग में गलत तरीके से चली गई हैं। मैं इसे कैसे बताऊंगा कि यह अनुभाग हटा दिया गया है और यही वजह है कि पहली पंक्ति में 4 पंक्तियों को स्थानांतरित कर दिया गया है। यह NSInternalInconsistencyException त्रुटि को रोक देगा।

** संपादित करें: ऐप केवल क्रैश हो जाता है अगर हटाए जाने वाले अनुभाग के नीचे एक अनुभाग होता है यही वजह है कि अधिक पंक्तियों को "अनुचित तरीके से" जोड़ा गया है। उस स्थिति में, जब मैं ऐप पुनः लॉन्च करता हूं, तो अनुभाग सफलतापूर्वक निकाल दिया गया था। सभी सामान्य लगता है।

* मैंने इस मुद्दे को हल किया है सबसे पहले, जब मैंने अद्यतन समाप्त कर दिया, तो मैंने पूरी तरह से डेटाबेस अपडेट नहीं किया। लेकिन फिर भी यह काम नहीं करेगा तो मैं सिर्फ 0.1 सेकंड का उपयोग करके अनुभाग को हटाने के लिए -परफ़ॉर्मसेक्टर द्वारा प्रयोग किया गया: withObject: afterDelay: और यह काम किया!



No comments:

Post a Comment