Đây thực sự chỉ là một cú pháp chuyển đổi. OK, vì vậy chúng tôi có cuộc gọi phương thức này:
[NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
Trong Swift, các hàm tạo bỏ qua phần "blahWith…" và chỉ sử dụng tên lớp như một hàm và sau đó đi thẳng đến các đối số, như vậy [NSPredicate predicateWithFormat: …]
sẽ trở thành NSPredicate(format: …)
. (Đối với một ví dụ khác, [NSArray arrayWithObject: …]
sẽ trở thành NSArray(object: …)
. Đây là một mẫu thông thường trong Swift.)
Vì vậy, bây giờ chúng ta chỉ cần truyền các đối số cho hàm tạo. Trong Objective-C, các ký tự NSString trông giống như vậy @""
, nhưng trong Swift, chúng tôi chỉ sử dụng dấu ngoặc kép cho các chuỗi. Vì vậy, điều đó cho chúng ta:
let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
Và trên thực tế, đó chính xác là những gì chúng ta cần ở đây.
(Tình cờ, bạn sẽ nhận thấy một số câu trả lời khác thay vào đó sử dụng chuỗi định dạng như "name contains[c] \(searchText)"
. Điều đó không chính xác. Điều đó sử dụng phép nội suy chuỗi, khác với định dạng vị từ và thường sẽ không hoạt động cho điều này.)