Tôi đang triển khai trường tìm kiếm nơi người dùng có thể nhập vào chuỗi để lọc các mục được hiển thị trong chế độ xem. Mỗi đối tượng được hiển thị có mối quan hệ nhiều với keywords
và tôi muốn có thể lọc các đối tượng dựa trên từ khóa của họ. Mỗi đối tượng từ khóa có một tài sản name
, vì vậy tôi đã thiết lập một NSPredicate để làm lọc trông như thế này:Khớp nối không phân biệt chữ hoa chữ thường trên quan hệ nhiều-nhiều
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS %@", self.searchString];
này hoạt động, nhưng vấn đề là tìm kiếm là trường hợp nhạy cảm, do đó nếu từ khóa có chữ cái viết hoa nhưng người dùng nhập tất cả chữ thường, không tìm thấy kết quả phù hợp nào. Tôi đã thử sửa đổi sau:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[c] %@", self.searchString];
Nhưng điều đó không tạo ra sự khác biệt nào về độ nhạy của trường hợp khớp. Có cách nào để thực hiện việc so khớp không phân biệt dạng chữ này chỉ bằng một biến vị ngữ đơn giản không? Hoặc tôi sẽ cần triển khai một số loại trình truy cập tùy chỉnh trên lớp từ khóa, ví dụ: viết phương pháp lowercaseName
và đối sánh với phiên bản chuỗi tìm kiếm thấp hơn thay vào đó?
Phụ Lục: Sau khi tiếp tục thăm dò, thực hiện giải pháp của việc thêm một accessor tùy chỉnh hoạt động OK để sử dụng nhãn hiệu của NSPredicate, nhưng không làm việc ở tất cả khi sử dụng NSFetchRequest với Core Data, mà chỉ có tác dụng khi truy vấn thuộc tính được định nghĩa trong dữ liệu cốt lõi mô hình.
Tôi biết phải có một cách tôi đã mất tích. Làm việc như một say mê. Cảm ơn! –