2011-05-31 31 views
11

मुझे दो इकाइयां मिली हैं जिन्हें मैं ए और बी कहूंगा। वे दोनों दिशाओं में कई रिश्ते के साथ कॉन्फ़िगर किए गए हैं, इसलिए एमीबी और बीएमए दोनों एनएसएससेट हैं।कोर डेटा उलटा रिश्ता सेट नहीं किया जा रहा है

यहां मेरी विचित्र समस्या है।

जब मैं अपने एक संस्था के लिए एक बी जोड़ने के लिए, मैं इसे इस तरह mutableSetValueForKey का उपयोग कर कार्य करें:

NSMutableSet *myBSet = [myA mutableSetValueForKey:@"myBs"]; 
[myBSet addObject:theBtoAdd]; 

यह एक संस्था के लिए theBtoAdd जोड़ने है, लेकिन व्युत्क्रम संबंध नहीं जोड़ता है। कोर डेटा संदर्भ सहेजने से कोई त्रुटि नहीं आती है, लेकिन मेरे ऑब्जेक्ट में बी इनवर्क्स सेट नहीं है। अगर मैं आवेदन से बाहर निकलता हूं, यहां तक ​​कि आंशिक संबंध भी सहेजा नहीं जाता है।

यहां अजीब हिस्सा है ... अगर मैं बस अपना कोड चारों ओर स्विच करता हूं और विपरीत करता हूं (कारण हैं कि मेरे विशेष एप्लिकेशन के लिए यह करना मुश्किल क्यों है) - इस तरह बी को जोड़ने के बजाय ए से बी जोड़ें :

NSMutableSet *myASet = [myB mutableSetValueForKey:@"myAs"]; 
[myASet addObject:theAtoAdd]; 

यह ठीक काम करता है। वैसे, मेरे पास काम करने वाले कई अन्य रिश्ते हैं। बस यह नहीं करता है।

अन्य चीजों के युगल: 1) मेरे कोर डेटा ऑब्जेक्ट मॉडल अच्छा लग रहा है, लेकिन यह है कि मैं Xcode 4 2) के तहत जोड़ दिया है पहले नई इकाई है मैंने जांच, फिर से जांचा और अंधा को देखकर चले गए मेरी कस्टम NSManagedObjects, लेकिन वे ठीक दिखते हैं - घोषित गतिशील, एनएसएससेट, कोई विवादित सेटर्स/गेटर्स ... आदि

कोई भी मदद या डिबगिंग सुझावों की बहुत सराहना की जाएगी। धन्यवाद!

+0

क्या आपने कभी यह पता लगाया है? मैं एक ही समस्या से फंस गया हूं :( – edsko

उत्तर

6

मुझे बस यही समस्या थी, इसलिए मैंने यह प्रश्न देखा। शायद मेरा समाधान कुछ लोगों को एक ही स्थिति में मदद करेगा।

- (void)willChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects 

- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects 

यह सही सूचनाएं रोकता माता पिता वर्ग (NSManagedObject) जो स्वत: रिवर्स रिश्तों हैंडल करने के लिए भेजा जा रहा है:

मेरे लिए इस सवाल का जवाब मैं अति-riden था कि NSManagedObject उपवर्ग में था।

+0

इससे मुझे भी मदद मिली।इसके लिए भी ऐसा करना याद रखें - (शून्य) didChangeValueForKey: (NSString *) कुंजी; (सादे मूल्य) – Lukasz

+0

सुडच मेरे कोडबेस में एक गूंगा बग, लेकिन यह जवाब इंगित करता है कि समस्या कहां होगी, इसलिए आपको मेरा अपवित्र मिल गया है। धन्यवाद महोदय। – LeffelMania

0

यदि आप प्रबंधित ऑब्जेक्ट को उप-वर्गीकृत कर रहे हैं, तो क्या कई रिश्तों के तरीकों से स्वतः उत्पन्न नहीं होना चाहिए? ताकि आपको केवल कॉल करने की आवश्यकता होगी:

[aObject addBObject:bObject]; 
+0

हां, मैं उसी परिणाम के साथ कोशिश कर सकता हूं और कोशिश करता हूं। मैं विशेष रूप से http://stackoverflow.com/questions/4206788/how-to-get- एक-रिश्ते-आइटम-गुण-इन-कोर-डेटा और mutableSetValueForKey का उपयोग करना। –

1

मैं त्रुटि पाया, अगर आप इन तरीकों

// KVO change notification 
- (void)willChangeValueForKey:(NSString *)key; 
- (void)didChangeValueForKey:(NSString *)key; 
- (void)willChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects; 
- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects; 

के किसी भी अधिभावी कर रहे हैं यह NSManagedObject कारण होगा अच्छी तरह से काम नहीं करते और रिश्तों को ठीक से सेट नहीं की जाएगी

एप्पल प्रलेखन: आपको इन तरीकों को ओवरराइड नहीं करना चाहिए।

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

  • कोई संबंधित समस्या नहीं^_^