2010-11-09 20 views
5

क्या त्रुटि हो वापस अशक्त आने के लिए होता है, यह मैं क्याmanagedObjectContext बचाने त्रुटि अशक्त होने के साथ विफल रहता है

+ (BOOL)saveContext:(NSManagedObjectContext *)context 
    { 
     NSError *error = nil; 
     if (![context save:&error]) 
     { 
     DLog(@"ERROR %@, %@", error, [error userInfo]); 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry" 

                 message:@"Error Saving the Data" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 

     [alert show]; 
     [alert release]; 

     return NO; 
     } 
    return YES; 
    } 

है उपरोक्त विधि एक वर्ग विधि है, मुझे यकीन है कि क्यों त्रुटि नहीं है नहीं कर रहा हूँ है कोई भी जानकारी।

इस विधि इस तरह कहा जाता है

[HSCoreDataUtility saveContext: self.managedObjectContext];

जब एक modalViewController बंद करने और navigationController की ओर लौटने है, तो मैं संदर्भ सहेजने की आवश्यकता है, लेकिन यह एक त्रुटि थ्रू में अब मुझे लगता है कि मैं इसके बारे में कारण नहीं सहेजा जा रहा है के रूप में एक विचार है, लेकिन shouldn ' त्रुटि मुझे एक सुराग दे? लेकिन लॉग सिर्फ कहते हैं, "त्रुटि (शून्य), (शून्य)"

कोई विचार

+0

क्या आप सुनिश्चित हैं कि 'संदर्भ' गैर-शून्य है? –

+0

हाँ, मुझे यकीन है। – creativeKoder

उत्तर

7

एकमात्र तरीका मैं देख सकता हूं कि स्थिति हो रही है यदि आप nil संदर्भ में गुजर रहे हैं। मैं उस वर्ग विधि के शीर्ष पर एक तर्क बम डालूंगा ताकि उसके खिलाफ सुरक्षा हो सके।

ठीक है, वास्तव में, मैं इस छोटी राशि के लिए कक्षा विधि नहीं बनाऊंगा; लेकिन बिंदु अभी भी खड़ा है। nil संदर्भ के लिए जांचें।

+0

में है, संदर्भ शून्य नहीं है, मुझे यह सुनिश्चित करने के लिए – creativeKoder

+0

i मैं संदर्भ के आसपास कैसे गुजर रहा हूं, यह ऐप प्रतिनिधि में शुरू होता है और मैं इसे वहां से पास करता हूं, क्या इसका इसके साथ कुछ लेना पड़ सकता है। – creativeKoder

+0

इसे कहीं जारी किया जा सकता है, या बनाए रखा नहीं जा सकता है? क्या यह 'nil' चेक के साथ वर्तमान '[संदर्भ retainCount]' थूक गया है। यह जांचने के लिए कभी दर्द नहीं होता है। –

0

Uhm, मुझे यकीन है कि% @ त्रुटि वर्बोज़ जाना का कारण होगा नहीं हूँ। [error localizedDescription]?

+0

मैंने दोनों का उपयोग किया है, [त्रुटि userInfo] और [त्रुटि स्थानीयकृत डिस्क्रिप्शन], एक ही चीज़ त्रुटि (शून्य), (शून्य) – creativeKoder

+0

यह भी है जो सेब के नमूना कोड – creativeKoder

8

मैं आपका दर्द रहा और जीवित रहा। ;)

लंबे समय तक डिबगिंग समय के बाद मुझे कस्टम ऑब्जेक्ट सत्यापन विधि में एहसास हुआ, कुछ मामलों में मैं कोई नहीं लौटा रहा था और त्रुटि को प्रारंभ नहीं कर रहा था।

यदि आपको यह समस्या है तो सत्यापन ऑब्जेक्ट विधियों की जांच करें। शायद यह आपकी समस्या भी थी।

+0

हो सकता है कि मूल पोस्टर की समस्या न हो, लेकिन यह वही है जो मेरे साथ हुआ था। धन्यवाद! ऐसा लगता है कि कोर डेटा को NSManagedObjectContext दस्तावेज़ों के विपरीत अपवाद फेंकना चाहिए - मुझे एक बग फाइल करना चाहिए। –

+0

यह 10 * ऊपर * वोट के लायक है। इससे मुझे बाल खींचने के घंटों बचाए, मुझे यकीन है! सहमत हैं, यह शायद मूल समस्या नहीं है, लेकिन यह निश्चित रूप से सटीक लक्षणों के साथ होता है। –

+0

हे भगवान! मैं इसे समझने के लिए घंटों खर्च करूंगा। धन्यवाद! –

0

मैं इस समस्या को पूरा करने के लिए हुआ है, और लंबे समय डिबग के बाद मैंने पाया यह NSError * त्रुटि का डुप्लिकेट घोषणा की वजह से है, हो सकता है आप के लिए किया था एक और NSError * बाहरी दायरे में त्रुटि, जैसे:

NSError* error = nil; 

// some code 

if (!error) 
{ 
    NSError* error = nil; 

    // your code 
} 

फिर त्रुटि शून्य होगी हालांकि वास्तव में एक अपवाद है।

1

यह वास्तव में पुराना धागा है, लेकिन उम्मीद है कि मेरी प्रतिक्रिया किसी ऐसे व्यक्ति की सहायता करेगी जो Google पर ऐसा करती है जैसा मैंने किया था। मैं इसी समस्या में भाग रहा था और इनमें से कोई भी जवाब मेरी समस्या नहीं थी; यह पता चला है कि मैंने डेटा मॉडल को बदलते समय ऐप को हटाने/पुनर्स्थापित करने की बहुत हड्डी की, मूर्खतापूर्ण गलती की, इसलिए सहेजने में त्रुटि विफल रही। यह सुनिश्चित करने के लिए जांचें कि आप एक ही काम नहीं करते हैं! :)

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