2010-09-09 15 views
5

कहें कि मेरे पास "obj" प्रकार की कोर डेटा ऑब्जेक्ट्स हैं, जिनमें एक संपत्ति "संपत्ति ए" है और "उप" प्रकार की ऑब्जेक्ट के साथ एक से कई रिश्ते हैं जिनमें दो गुण हैं, "propertyB" और "propertyC"।कोर डेटा संबंधों पर फ़िल्टर करने के लिए मैं एनएसपी्रेडिकेट का उपयोग कैसे कर सकता हूं?

मैं उन सभी objs को प्राप्त करना चाहता हूं जिनमें संपत्ति है एक गुण के बराबर है और संपत्ति बी और प्रॉपर्टीसी सेट के साथ एक उप obj।

यदि यह महज propertyA और propertyB था, मैं

[NSPredicate predicateWithFormat:@"ANY sub.propertyB = %@ AND propertyA == %@", ...]; 

समस्या यह है कि मैं दूसरी संपत्ति में शामिल करने का तरीका को समझ नहीं सकता है करना होगा। मैं केवल उन ओब्जे को चाहता हूं जिनमें कम से कम एक उप है जिसमें दो गुण सत्य हैं। मैं निम्नलिखित की कोशिश की है, लेकिन यह काम नहीं करता है:

[NSPredicate predicateWithFormat:@"ANY (sub.propertyB = %@ AND sub.propertyC) AND propertyA == %@", ...]; 

मैं इसके बिना किसी भी लेकिन है कि या तो काम नहीं करता है की कोशिश की है। मैं यह कैसे कर सकता हूँ?

उत्तर

7

चूंकि आपके पास उप ऑब्जेक्ट के साथ बहुत से संबंध हैं, subsobj की संपत्ति एक ऑब्जेक्ट के बजाय एक सेट लौटाती है। सेट को क्वेरी करने के लिए, आपको एक सबक्वायरी का उपयोग करने की आवश्यकता है।

सबक्वेरी फ़ॉर्म दिया गया है: इस मामले में

SUBQUERY(collection, $individualCollectionItem, expression-with-collection-item) 

आप चाहेंगे

SUBQUERY(subs,$s,$s.propertyB==%@) AND SUBQUERY(subs,$s,$s.propertyC!=NULL) 
+0

धन्यवाद, लेकिन मुझे किसी भी सेब दस्तावेज़ में सबक्विरीज़ के बारे में कुछ भी नहीं मिला। यदि मैं इसका उपयोग करता हूं तो क्या ऐप स्टोर से मेरा ऐप खारिज कर दिया जा रहा है? – Mike

+0

मुझे काम करने के लिए सबकुछ नहीं मिल सकता है। मेरा मूल अनुमान था: – Mike

+0

एनएसपीडिकेट * predicate = [एनएसपीडिकेट predicateWithFormat: @ "isdeleted == नहीं और कोई भी appuserMessages.recAppUserID ==% @", appuserid]; – Mike

4

समाधान की तरह कुछ हो रहा है:

[NSPredicate predicateWithFormat:@"propertyA == %@ AND (SUBQUERY(sub, $s, $s.propertyB == %@ AND $s.propertyC == %@)[email protected] != 0)", propertyAvalue, propertyBvalue, propertyCvalue]; 

जहां अंत में मान वे मान हैं जिन्हें आप विभिन्न गुणों के बराबर होना चाहते हैं।

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

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