और लोग हैं, जो काफी नहीं मिलता है के लिए क्या प्रलेखन कह रहा है, एक SUBQUERY
अनिवार्य रूप से यह है:
SUBQUERY(collection, variableName, predicateFormat)
और (simplistically) इस तरह लागू किया जा सकता:
id resultingCollection = ...; //a new collection, either a mutable set or array
NSMutableDictionary * substitutions = [NSMutableDictionary dictionary];
NSPredicate * p = [NSPredicate predicateWithFormat:predicateFormat];
for (id variable in collection) {
[substitutions setObject:variable forKey:variableName];
NSPredicate * filter = [p predicateWithSubstitutionVariables:substitutions];
if ([filter evaluateWithObject:collection] == YES) {
[resultingCollection addObject:variable];
}
}
return resultingCollection;
तो संक्षेप में, SUBQUERY
मूल रूप से SUBQUERY
की पूर्व अभिव्यक्ति के आधार पर वस्तुओं का संग्रह ले रहा है और विभिन्न वस्तुओं को फ़िल्टर कर रहा है, और परिणामी संग्रह को वापस कर रहा है। (और विधेय ही अन्य SUBQUERY
रों शामिल कर सकते हैं)
उदाहरण:
NSArray * arrayOfArrays = [NSArray arrayWithObjects:
[NSArray arrayWithObjects:....],
[NSArray arrayWithObjects:....],
[NSArray arrayWithObjects:....],
[NSArray arrayWithObjects:....],
[NSArray arrayWithObjects:....],
[NSArray arrayWithObjects:....],
nil];
NSPredicate * filter = [NSPredicate predicateWithFormat:@"SUBQUERY(SELF, $a, [email protected] > 42)"];
NSArray * filtered = [arrayOfArrays filteredArrayUsingPredicate:filter];
//"filtered" is an array of arrays
//the only arrays in "filtered" will have at least 42 elements each
स्रोत
2010-09-28 17:08:39
अरे! मुझे विश्वास नहीं है कि मुझे याद आया। बहुत बहुत धन्यवाद। – pieSquared
आप कैसे जानते हैं कि किस पत्र का उपयोग करना है? कुछ स्थानों पर मैं $ x कुछ स्थानों को देखता हूं, मुझे $ s दिखाई देता है, कुछ मुझे $ ए देखते हैं, और मैं संदर्भ से $ x और $ s के बीच किसी भी अंतर को नहीं देख सकता। – jpswain
@ नारंगी80: परिवर्तनीय नाम आपकी पसंद है। मेरे उत्तर में लिंक किए गए दस्तावेज़ देखें। यदि आप पाइथन जानते हैं, तो यह कहने की तरह है '[एक्स एक्स संग्रह में एक्स (अगर x शामिल कुछ शर्त)] '। जहां तक मुझे पता है, वैरिएबल नाम को एक भी अक्षर नहीं होना चाहिए। –