मैं एक खोज क्षेत्र को कार्यान्वित कर रहा हूं जहां उपयोगकर्ता दृश्य में प्रदर्शित वस्तुओं को फ़िल्टर करने के लिए स्ट्रिंग में टाइप कर सकता है। प्रदर्शित होने वाली प्रत्येक वस्तु में keywords
से कई रिश्ते हैं, और मैं उनके कीवर्ड के आधार पर ऑब्जेक्ट्स को फ़िल्टर करने में सक्षम होना चाहता हूं। प्रत्येक कीवर्ड वस्तु एक name
संपत्ति है, इसलिए मैं छानने कि इस तरह दिखता है करने के लिए एक NSPredicate सेट कर लेते हैं:कई रिश्तों पर एनएसपीडिकेट केस-असंवेदनशील मिलान
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS %@", self.searchString];
यह काम करता है, लेकिन समस्या यह है, केस-संवेदी है कि खोज है, इसलिए यदि कीवर्ड में पूंजी पत्र होता है लेकिन उपयोगकर्ता सभी लोअरकेस में टाइप करता है, कोई मिलान नहीं मिलता है। मैंने निम्नलिखित संशोधन की कोशिश की है:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[c] %@", self.searchString];
लेकिन इससे मेल खाने की संवेदनशीलता में कोई फर्क नहीं पड़ता है। क्या इस मामले-असंवेदनशील मिलान को केवल एक सादे भविष्यवाणी का उपयोग करने का कोई तरीका है? या मुझे कीवर्ड वर्ग पर कुछ प्रकार के कस्टम एक्सेसर को लागू करने की आवश्यकता होगी, उदा। lowercaseName
विधि लिखें और इसके बजाय खोज स्ट्रिंग के निचले संस्करण के विरुद्ध मिलान करें?
परिशिष्ट: आगे अन्वेषण करने के बाद, एक कस्टम एक्सेसर जोड़ने के वैकल्पिक हल NSPredicate के मैनुअल उपयोग के लिए ठीक काम करता है, लेकिन जब कोर डाटा है, जो केवल काम करता है जब कोर डाटा में परिभाषित विशेषताओं क्वेरी करने के साथ NSFetchRequest का उपयोग करने में बिल्कुल काम नहीं करता आदर्श।
मुझे पता था कि मुझे एक तरह से लापता होना था। एक जादू की तरह काम करता है। धन्यवाद! –