Tôi có một NSArrayController, companiesController
được liên kết với một thực thể Dữ liệu chính cấp cao nhất, Companies
.Sử dụng NSPredicate với Dữ liệu cốt lõi cho các mối quan hệ sâu
A Company
có nhiều Department
và một số Department
có nhiều Employee
; chúng được đại diện bởi các mối quan hệ 1 đến nhiều, departments
và employees
.
Dựa trên các thuộc tính của một salary
Employee
tôi nghĩ rằng tôi tự động có thể làm điều này cho lọc dựa trên mức lương bên trong một phương pháp giao diện người dùng được gọi là:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY departments.employees.salary < %@", [NSNumber numberWithInt:23000]];
[companiesController setFilterPredicate:predicate];
Alas, điều này mang lại cho tôi những lỗi: -[NSCFSet compare:]: unrecognized selector sent to instance
.
Cảm ơn, công trình này. Có vẻ như một giải pháp thay thế, nhưng đó chỉ là những vấn đề của Core Data mà tôi đoán. – raheel
Tôi cho rằng nó có liên quan đến cách dữ liệu lõi dịch NSPredicate thành (các) câu lệnh SQLite. Cú pháp là mơ hồ: bạn có nghĩa là BẤT CỨ hoặc TẤT CẢ Nhân viên (s) trong một Sở cụ thể. Ngoài ra, tôi là một người mới làm quen với SQL, nhưng tôi đoán là ngay cả khi biến vị ngữ ban đầu của bạn có thể được thực hiện trong một câu lệnh SQL đơn giản, nó sẽ đòi hỏi một sự tham gia lớn mà Apple có thể xem xét quá bộ nhớ hoặc hiệu suất chuyên sâu cho một lần tìm nạp đơn lẻ. – gerry3
Ngoài ra, tôi đã dành khá nhiều thời gian cho việc này để bỏ phiếu sẽ được đánh giá cao :-). – gerry3