2011-03-05 11 views
6

मौजूदा निरंतर स्टोर को पुनर्स्थापित करने के लिए उचित रणनीति क्या है यदि कोई ऐसा करने में कोई त्रुटि हो - [NSManagedObjectContext save:]?प्रबंधित ऑब्जेक्ट कॉन्टेक्स्ट को सहेजते समय त्रुटि को कैसे प्रबंधित करें?

- [NSManagedObjectContext रोलबैक]?

या मुझे सहेजने का प्रयास करने से पहले फाइल सिस्टम पर स्टोर की एक प्रति सहेजनी चाहिए: और फिर, यदि कोई त्रुटि है, तो स्टोर को सहेजने के लिए स्टोर को सेट करने के लिए [NSPersistentStoreCoordinator setURL: forPersistentStore:] का उपयोग करें?

किसी भी पॉइंटर्स के लिए धन्यवाद।

गोंजालो

उत्तर

10

जब सहेजने में विफल रहता है (प्रोग्रामर के रूप में) कुछ गलत किया जाता है।

मैंने कुछ सुंदर जटिल कोर-डेटा अनुप्रयोगों को लिखा और कभी भी उत्पादन में असफल बचत नहीं देखी।

सुनिश्चित करें कि उपयोगकर्ता जो मान दर्ज कर सकते हैं वे बिना त्रुटि के सहेजे जा सकते हैं।

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

यह उपयोगकर्ता के लिए भी अधिक सुविधाजनक है। यदि आप उसे 10 minutes ago you did something wrong, thats why I will delete all your changes बताते हैं तो वह WTF? सोचेंगे। यदि आप उसे The value you try to enter is not in the correct format. Please use xxxxx बताते हैं तो वह Ok, let's change it.

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

0

मुझे विश्वास है, हालांकि मैं यह डॉक्स में स्पष्ट रूप से लिखा नहीं दिख रहा है, यह एक त्रुटि होती है, तो के दौरान तो बचाने को बचाने में विफल रहता है और डेटा संग्रह यथावत रहेगा। आप आसानी से डेटा स्टोर की प्रतिलिपि बनाकर, किसी प्रकार की त्रुटि को मजबूर करके और फिर प्रतिलिपि को प्रतिलिपि बनाकर सत्यापित कर सकते हैं।

0

एनएसएमएनेज्ड कॉन्टेक्स्ट सेव एक बूल लौटाता है, यदि सफल होता है, तो नहीं। यह आपको निश्चित रूप से बताएगा कि डेटा स्टोर वास्तव में बदला गया है या नहीं।

एक और बात: "एक SQLite स्टोर के सहेजें व्यवहार को कॉन्फ़िगर करना" के तहत ऐप्पल की "कोर डेटा प्रोग्रामिंग गाइड: पर्सिस्टेंट स्टोर फीचर्स" पर एक नज़र डालें। बचत प्रक्रिया के दौरान कुछ बाधाओं के कारण डेटा भ्रष्टाचार के खिलाफ सुनिश्चित करने के लिए, स्टोर के लिए पूर्ण सिंक विकल्पों को सेट अप करने का एक पूरा उदाहरण देते हैं।

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