2012-01-30 21 views
7

Ab और Ba कई रिश्तों के विपरीत हैं। मुझे लगता है किइस एनएसपी्रेडिकेट में "नहीं" क्यों काम नहीं करता है?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT %@ IN b", bObject]; 

दोनों विधेय एक ही परिणाम देना चाहिए - A रों के माध्यम से bObject साथ कोई संबंध नहीं है कि संग्रह: क्यों A काम के लिए इस विधेय करता है:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", bObject.a]; 

जबकि यह एक नहीं है a<-->b। लेकिन वास्तव में, पहला व्यक्ति सही संग्रह देता है जबकि दूसरा नहीं।

अद्यतन:


यहाँ एक sample project जिसमें A है। bAccount द्वारा अवशोषित किया गया है। filtered_clients और BaClient द्वारा अवशोषित किया गया है। filtered_by

अंतर देखने के लिए लाइन 143 और लाइन 144 की टिप्पणी को MasterViewController.m पर टॉगल करें।

कृपया मुझे अपने कोड में बग खोजने में मदद करें या पुष्टि करें कि यह Core Data बग है इसलिए मैं इसे ऐप्पल को रिपोर्ट कर सकता हूं। बहुत बहुत धन्यवाद।

+0

आपका दूसरा पूर्वानुमान परीक्षण में प्रतीत होता है यदि बी बी में नहीं है - क्या आपका मतलब है? –

+0

जैसा कि निक ने बताया: क्या आप थोड़ा और कोड दे सकते हैं। 'बी' चर क्या है? Fetch अनुरोध कैसे उत्पन्न कर रहे हैं? –

+0

अधिक स्पष्ट होने के लिए, मैंने वैरिएबल नाम को "bObject" में बदल दिया है जो बी – an0

उत्तर

0

प्रलेखन से:

महत्वपूर्ण आप दोनों में कई-से-अनेक रिश्तों को परिभाषित करना होगा दिशाओं-कि है, तो आप दो रिश्तों का उल्लेख करना होगा, एक दूसरे के उलटा किया जा रहा है। आप में एक से अधिक रिश्ते को परिभाषित नहीं कर सकते हैं और इसे कई से अधिक के रूप में उपयोग करने का प्रयास कर सकते हैं। यदि आप करते हैं, तो आप संदर्भित अखंडता समस्याओं के साथ समाप्त हो जाएंगे।

तो यह जाँच:

  1. एक है कई रिश्ते के लिए बी करने के लिए एक
  2. बी एक ए
  3. के लिए कई रिश्ते के लिए एक रिश्ता बी संबंध का उल्टा होता है है ।
  4. बी संबंध एक रिश्ते के विपरीत है।
+0

कृपया नीचे दिए गए प्रश्न और टिप्पणियां पढ़ें। यह निश्चित रूप से, एक बहुत से मैन्टी रिश्ते है। – an0

+0

मुझे विश्वास है कि आप दोबारा जांच कर चुके हैं ... – Mundi

+0

हां, मैंने दोबारा जांच की है। – an0

3

यहाँ एक और विचार है: शायद यह "नकारना" करने के लिए NOT साथ bObject प्रयास कर रहा है। इस प्रकार, कोशिश करें:

@"NOT (%@ IN b)" 
+1

@ "NOT% @ IN b" जैसा ही है। – an0

0

मुझे लगता है कि मुझे इस प्रश्न में आने वाले लोगों के लिए जवाब मिला है। स्पष्ट रूप से आपको कम से कम दो मामलों में दो मामलों के साथ काम करने के लिए एसईएलएफ का उपयोग करने की आवश्यकता है। यह मेरे लिए काम करता है:

NOT (SELF IN %@) 
संबंधित मुद्दे