दिलचस्प पोस्ट
आईपी ​​एड्रेस वैधीकरण के लिए नियमित अभिव्यक्ति फ़ारेनहाइट से सेल्सियस को परिवर्तित करने के लिए सी प्रोग्राम JOIN या WHERE में शर्त RegisterStartupScript और RegisterClientScriptBlock के बीच अंतर? मोबाइल ब्राउज़र से ऐप (फेसबुक / ट्विटर / आदि) कैसे लॉन्च करें, लेकिन ऐप इंस्टॉल नहीं होने पर हाइपरलिंक पर वापस आ जाए तत्वों के लिए आत्म समापन टैग लिखना पारंपरिक रूप से खाली बुरा अभ्यास नहीं है? सीएसएस 3 आकृति: "उलटा चक्र" या "कट आउट सर्कल" एडेप्टर के साथ गतिशील रूप से अपडेट करें छवि के नीचे सफेद स्थान निकालें जावा संग्रह फ्रेमवर्क कार्यान्वयन के लिए बिग-ओ सारांश? गणना करने के लिए BOOL * रोक तर्क क्या है? ऑब्जेक्ट्सउपिंगब्लॉक: के लिए उपयोग किया जाता है? जावा त्रुटि – वास्तविक और औपचारिक तर्क सूची लंबाई में भिन्न होती है AsyncTask को कई बार निष्पादित करें विज़िटर का देश अपने आईपी से प्राप्त करना getResourceAsstream नल रिटर्न

एनएसपीआरडीएक्स का प्रयोग एनएसएआरएआरएस पर आधारित एनएसएआरआरए फ़िल्टर करने के लिए

मेरे पास शब्दकोशों की एक सरणी है

मैं एक कुंजी के आधार पर सरणी को फ़िल्टर करना चाहता हूं।

मैंने यह कोशिश की:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == %@)", @"Football"]; NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate]; 

यह काम नहीं करता है, मुझे कोई परिणाम नहीं मिलता। मुझे लगता है कि मैं कुछ गलत कर रहा हूँ मुझे पता है कि यह विधि है, यदि "खेल" एक ivar था। मुझे लगता है कि यह संभवतः अलग है यदि यह एक महत्वपूर्ण है

मैं हालांकि एक उदाहरण खोजने में सक्षम नहीं किया गया है

धन्यवाद


अद्यतन करें

मैंने उस स्ट्रिंग के चारों ओर उद्धरण जोड़े जो मैं खोज रहा हूं।

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == '%@')", @"Football"]; 

यह अब भी काम नहीं करता है।


अपडेट 2

उसे हल कर लिया। मुझे वास्तव में एकल उद्धरणों को निकालना पड़ा, जो कि गाइड के अनुसार क्या कहता है।

मेरी असली समस्या यह है कि मेरे पास नेस्टेड ऐरे हैं और मैं वास्तव में शब्दकोशों का मूल्यांकन नहीं कर रहा था अस्थि सिर चाल

वेब के समाधान से एकत्रित समाधान "एनएसपीआरडीएक्स का प्रयोग एनएसएआरएआरएस पर आधारित एनएसएआरआरए फ़िल्टर करने के लिए"

यह काम करना चाहिए – जब तक डेटा चर वास्तव में कुंजी सरणी के साथ एक शब्दकोश युक्त एक सरणी है

 NSArray *data = [NSArray arrayWithObject:[NSMutableDictionary dictionaryWithObject:@"foo" forKey:@"BAR"]]; NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(BAR == %@)", @"foo"]]; 

इस मामले में फ़िल्टर किए गए शब्दकोष में शामिल हैं

(% @ को उद्धृत नहीं करना पड़ता है, यह तब किया जाता है जब NSPdericate वस्तु बनाता है।)

मुझे पता है कि यह पुरानी खबर है लेकिन मेरे दो सेंट जोड़ने के लिए। डिफ़ॉल्ट रूप से मैं बस [c] बजाए कमांड [c] बजाए कमांड का उपयोग करता हूं। [d] उच्चारण चिह्नों के साथ अक्षरों की तुलना करता है यह विशेष रूप से मेरे वॉरकॉफ्ट ऐप में अच्छी तरह से काम करता है, जहां लोग अपना नाम "वाउदो" लिखते हैं, जिससे वे अपने नाम को तालिकाव्यू में खोजना लगभग असंभव बनाते हैं। [d] अपने उच्चारण चिह्नों को विधेय के दौरान स्ट्रिप्स करता है तो @"name LIKE[CD] %@", object.name एक वस्तु, वस्तु। नाम जहां object.name == @"voodoo" वस्तु को वौदोबो नाम देगी।

एप्पल प्रलेखन से: जैसे [सीडी] का अर्थ है "केस- और डाइरेक्टिक-असंवेदनशील।") स्ट्रिंग सिंटैक्स का एक पूरा विवरण और सभी ऑपरेटरों की एक सूची उपलब्ध है, प्रदीप्ति प्रारूप स्ट्रिंग सिंटैक्स देखें

 #import <Foundation/Foundation.h> // clang -framework Foundation Siegfried.m int main() { NSArray *arr = @[ @{@"1" : @"Fafner"}, @{@"1" : @"Fasolt"} ]; NSPredicate *p = [NSPredicate predicateWithFormat: @"SELF['1'] CONTAINS 'e'"]; NSArray *res = [arr filteredArrayUsingPredicate:p]; NSLog(@"Siegfried %@", res); return 0; } 

NSPredicate केवल iPhone 3.0 में उपलब्ध है।

डिवाइस पर चलने की कोशिश नहीं होने तक आप यह नहीं देखेंगे।

स्विफ्ट 3 के साथ, जब आप डिक्शनरी कुंजी और मूल्यों के आधार पर एक वर्डिकेट के साथ सरंचनाओं को फ़िल्टर करना चाहते हैं, तो आप निम्न में से एक पैटर्न चुन सकते हैं।


# 1। NSPredicate init(format:arguments:) का उपयोग करना init(format:arguments:) प्रारंभकर्ता

यदि आप उद्देश्य-सी से आते हैं, तो init(format:arguments:) कुंजीपटल का मूल्यांकन करने के लिए एक महत्वपूर्ण मूल्य कोडिंग शैली प्रदान करता है।

उपयोग:

 import Foundation let array = [["key1": "value1", "key2": "value2"], ["key1": "value3"], ["key3": "value4"]] let predicate = NSPredicate(format: "key1 == %@", "value1") //let predicate = NSPredicate(format: "self['key1'] == %@", "value1") // also works let filteredArray = array.filter(predicate.evaluate) print(filteredArray) // prints: [["key2": "value2", "key1": "value1"]] 

# 2। NSPredicate init(block:) प्रारंभकर्ता का उपयोग करना

एक विकल्प के रूप में यदि आप कसौटी टाइप किए एपीआई पर जोरदार टाइप एपीआई पसंद करते हैं, तो आप init(block:) initializer का उपयोग कर सकते हैं।

उपयोग:

 import Foundation let array = [["key1": "value1", "key2": "value2"], ["key1": "value3"], ["key3": "value4"]] let dictPredicate = NSPredicate(block: { (obj, _) in guard let dict = obj as? [String: String], let value = dict["key1"] else { return false } return value == "value1" }) let filteredArray = array.filter(dictPredicate.evaluate) print(filteredArray) // prints: [["key2": "value2", "key1": "value1"]] 

NSPredicate संदर्भ को देखते हुए, ऐसा लगता है कि आपको उद्धरण चिह्नों के साथ अपने प्रतिस्थापन चरित्र को घेरना होगा। उदाहरण के लिए, आपकी वर्तमान पादरी पढ़ती है: (SPORT == Football) आप इसे पढ़ना चाहते हैं (SPORT == 'Football') , इसलिए आपका प्रारूप स्ट्रिंग @"(SPORT == '%@')"