मेरे पास कोर डेटा मॉडल है जिसमें तीन इकाइयां हैं: ए, बी, और सी ए के साथ बी के साथ एक से अधिक संबंध हैं, और बी के साथ कई से अधिक रिश्ते हैं। ए के लिए डिलीट नियम -> बी "कैस्केड" है, और बी -> ए "नो एक्शन" है। बी -> सी के लिए डिलीट नियम "नो एक्शन" है, और सी -> बी "अस्वीकार" है।कोर डेटा में प्रबंधित ऑब्जेक्ट्स को सही ढंग से कैस्केड कैसे करें?
मुझे ए इकाई पर एक डिलीट करने में परेशानी हो रही है। (नियम "कास्केड" की वजह से हटाना) किसी भी बी के एक साथ जुड़े करने के लिए (deleteObject:
का उपयोग कर)
- मैं एक का एक उदाहरण हटाना
- हटाने propagates
- : क्या मैं क्या करना चाहते पीछा कर रहा है जब एक एक dele है: सभी बी के एक साथ जुड़े नष्ट हो जाती हैं
- किसी भी सी जिसका जुड़े बी के नष्ट कर दिया गया से संबंधित रिश्ते, भी
कि एक छोटे से भ्रमित हो सकता है, इसलिए मुझे व्याख्या करते निकाल दिए जाते हैं टेड, सभी संबंधित बी को हटा दें। और किसी भी सी जो उन बी को संदर्भित करता है उन्हें अब संदर्भित नहीं करना चाहिए।
मेरे परीक्षण में, मुझे "कैस्केड" को मेरे लिए नियम का काम नहीं दिख रहा है। जब मैं ए को हटा देता हूं, तो मैं तुरंत बाद में processPendingChanges
का आह्वान करता हूं (केवल यह सुनिश्चित करने के लिए कि हटाना हो गया है)। फिर मैं ए और बी की संख्या की तुलना करता हूं जो हटाने से पहले NSManagedObjectContext में थे, और उसके बाद। ए का उदाहरण ठीक से हटा दिया गया है, (कुल ए की संख्या अब हटाने से पहले एक कम है)। हालांकि, बी की संख्या वही बना है। तो, ऐसा लगता है कि "कैस्केड" हटाने के नियम को सम्मानित नहीं किया जा रहा है।
मुझे पता है कि मैं मैन्युअल रूप से ए -> बी रिश्ते से गुजर सकता हूं, और मैन्युअल रूप से प्रत्येक बी को हटा सकता हूं। हालांकि, ऐसा लगता है कि कोर डेटा कुछ मुफ्त में प्रदान करता है, इसलिए मैं कोर डेटा तक ऐसा नहीं करना चाहता अपर्याप्त है "कैस्केड" हटाने के नियमों के उपयोग से संबंधित कोई भी जानकारी स्वागत है।
क्यों नहीं करते आप हटाना चाहते हैं सी का संदर्भ बी बी हटाए गए ए से जुड़ा है? – Eimantas