के निर्माण/हटाने के लिए पूर्ववत अक्षम करें मेरे कोर डेटा मॉडल में, मुझे listItems
नामक एक रिश्ते मिला है जो कई listItem
इकाइयों से लिंक करता है, प्रत्येक stringValue
विशेषता के साथ। मैंने एक नियंत्रण बनाया है जो प्रत्येक सूची आइटम के लिए अनिवार्य रूप से NSTextFields
की एक सूची है। नियंत्रण listItems
से ठीक है, और मैंने इसे सेट अप किया है ताकि रिटर्न कुंजी दबाकर वर्तमान में संपादित किए गए एक के तहत सीधे एक नया फ़ील्ड बनाया जा सके और फोकस को नए फ़ील्ड में बदल दिया जा सके। इसलिए, अनिवार्य रूप से, एक नया आइटम जोड़ने के लिए, उपयोगकर्ता रिटर्न दबाता है।NSManagedObject
इसी प्रकार, यदि उपयोगकर्ता संपादन समाप्त कर देता है और वर्तमान में संपादित फ़ील्ड खाली है, तो फ़ील्ड हटा दिया जाता है (जैसा कि खाली फ़ील्ड केवल "संपादन मोड" के दौरान दिखाई देते हैं, इसलिए बोलने के लिए)। यह बहुत अच्छी तरह से काम करता है। मूल रूप से, मेरे listItem
NSManagedObject उपवर्ग में, मैं निम्न कार्य करें:
// Don't allow nil values
if (!value && [[self.recipe ingredients] count] > 1) {
for (EAIngredientRef *ingredient in [self.recipe ingredients]) {
if ([[ingredient sortIndex] integerValue] > [[self sortIndex] integerValue]) {
[ingredient setSortIndex:[NSNumber numberWithInteger:([[ingredient sortIndex] integerValue]-1)]];
}
}
[[self managedObjectContext] deleteObject:self];
return;
}
// Code to handle if it is a real value
समस्या मैं का सामना कर रहा है कि हर बार एक पंक्ति इस तरह से हटाने के बाद, undoManager के साथ पंजीकृत है। इस प्रकार, यदि मैं एक पंक्ति संपादित करता हूं, तो वापसी (जो एक नई पंक्ति बनाता है) दबाएं, और संपादन समाप्त करने के लिए दूर क्लिक करें, पंक्ति गायब हो जाती है। हालांकि, अगर मैं पूर्ववत करता हूं, खाली क्षेत्र फिर से दिखाई देता है। मेरा लक्ष्य है कि रिक्त फ़ील्ड को शामिल करने वाले अभियानों को हटाएं, पूर्ववत प्रबंधक द्वारा अनदेखा किया जाए।
मैं इसके बारे में कैसे जाऊं? मैं [[[self managedObjectContext] undoManager] disableUndoRegistration]
और कई स्थानों में जुड़े enableUndoRegistration
का उपयोग कर की कोशिश की है (जैसे -didTurnIntoFault
के रूप में है, लेकिन मुझे लगता है कि पूर्ववत पंजीकरण उस विधि से पहले हो रहा हो सकता है)