5

Lần này tôi nhận được một hành vi lạ với NSFetchedResultsController. Tôi tạo ra một fetchRequest như thế này:NSFetchedResultsController and Relationship

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entdesc = [NSEntityDescription entityForName:@"Exam" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entdesc]; 
NSPredicate *predi = [NSPredicate predicateWithFormat:@"student == %@", self.student]; 
[fetchRequest setPredicate:predi]; 

Nếu tôi thực hiện nó với executeFetchRequest:error: của NSManagedObjectContext, tôi nhận được kết quả mong đợi. Tất cả các bài kiểm tra theo học sinh. (Giữa Học sinh và kỳ thi là mối quan hệ một-nhiều) Nhưng nếu tôi sử dụng cùng một fetchRequest trong NSFetchedResultsController, tôi sẽ nhận được một thứ khác. Cho đến bây giờ tôi đã không nhận ra, những gì tôi chính xác nhận được. Trong mắt tôi kết quả là ngẫu nhiên.

Bạn có thể giúp tôi không? Tôi muốn quản lý các bài kiểm tra của một học sinh đã cho với một NSFetchedResultsController.

Sandro Meier

+0

'[NSPredicate predicateWithFormat: @" student ==% @ ", self.exam]'. Ở đây, là 'self.exam' một sinh viên? – albertamg

+0

Xin lỗi lỗi của tôi. Chắc chắn nó phải là một sinh viên. ;-) –

Trả lời

1

Nếu bạn có một đối tượng Student đã có trong tay, bạn không cần phải lấy Exam đối tượng bạn chỉ cần hỏi các đối tượng Student về nội dung của mối quan hệ exams của nó. Không cần tìm nạp vì bạn đã có tham chiếu đến tất cả các đối tượng Exam mà bạn muốn.

Tại sao quá trình tìm nạp hoạt động bên ngoài trình điều khiển kết quả tìm nạp, tôi không thể nói chắc chắn. Bộ điều khiển không làm gì ngoài lấy kết quả tìm nạp và đóng gói chúng để hiển thị trong chế độ xem bảng. Nếu dữ liệu không hiển thị đúng trong tableview, thì vấn đề rất có thể là trong các phương thức đại biểu/nguồn dữ liệu tableview nơi bạn kết nối nội dung của bộ điều khiển kết quả được tìm nạp với tableview.

+0

Cảm ơn bạn đã trả lời. Tôi cũng nghĩ về điều này. Nhưng NSFetchedResultsController thực hiện tất cả việc xử lý cho tôi. Nếu tôi không tìm được giải pháp khác, tôi sẽ làm theo cách đó. ;-) –

+0

Có cùng một vấn đề ở đây. Nó là rất thuận tiện có fetchcontroller để tạo ra tất cả các phần cho bảng của bạn. Thực hành tốt nhất ở đây là gì? – obiwahn

Các vấn đề liên quan