यह वास्तव में सिर्फ एक सिंटैक्स स्विच है। ठीक है, इसलिए हमारे पास यह तरीका है:
[NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
स्विफ्ट में, कंस्ट्रक्टर "blahWith ..." भाग को छोड़ देते हैं और केवल एक फ़ंक्शन के रूप में वर्ग नाम का उपयोग करते हैं और फिर सीधे तर्कों पर [NSPredicate predicateWithFormat: …]जाते हैं , इसलिए बन जाएगा NSPredicate(format: …)। (एक अन्य उदाहरण के लिए, [NSArray arrayWithObject: …]बन जाएगा NSArray(object: …)। यह स्विफ्ट में एक नियमित पैटर्न है।)
तो अब हमें बस कंस्ट्रक्टर के पास आर्ग्युमेंट पास करना होगा। ऑब्जेक्टिव-सी में, एनएसएसट्रिंग शाब्दिक जैसे दिखते हैं @"", लेकिन स्विफ्ट में हम स्ट्रिंग्स के लिए उद्धरण चिह्नों का उपयोग करते हैं। तो यह हमें देता है:
let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
और वास्तव में यह वही है जो हमें यहाँ चाहिए।
(संयोग से, आप कुछ अन्य उत्तरों पर ध्यान देंगे, बजाय इसके "name contains[c] \(searchText)"कि एक प्रारूप स्ट्रिंग का उपयोग करें । यह सही नहीं है। यह स्ट्रिंग प्रक्षेप का उपयोग करता है, जो विधेय प्रारूपण से अलग है और आम तौर पर इसके लिए काम नहीं करेगा।)