Bu gerçekten sadece bir sözdizimi anahtarıdır. Tamam, bu yüzden şu yöntem çağrımız var:
[NSPredicate predicateWithFormat:@"name contains[c] %@", searchText]
Swift yılında kurucular "blahWith ..." bölümünü atlayın ve sadece bir fonksiyonu olarak sınıf adını kullanabilir ve daha sonra argümanları doğruca, bu yüzden [NSPredicate predicateWithFormat: …]
olacaktı NSPredicate(format: …)
. (Başka bir örnek için, [NSArray arrayWithObject: …]
olur NSArray(object: …)
. Bu, Swift'de normal bir kalıptır.)
Şimdi argümanları kurucuya iletmemiz gerekiyor. Objective-C'de, NSString değişmezleri gibi görünür @""
, ancak Swift'de dizeler için sadece tırnak işaretleri kullanırız. Bu bize şunu verir:
let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
Ve aslında tam da burada ihtiyacımız olan şey bu.
(Bu arada, diğer yanıtlardan bazılarının bunun yerine bir biçim dizesi kullandığını fark edeceksiniz "name contains[c] \(searchText)"
. Bu doğru değil. Bu, yüklem biçimlendirmesinden farklı olan ve genellikle bunun için işe yaramayacak olan dize enterpolasyonunu kullanır.)