Tôi đang thực hiện yêu cầu tìm nạp trả về khoảng 2000 thực thể. Hiện tại, việc này mất khoảng 20 giây trên thiết bị của tôi. Vì vậy, tôi nghĩ rằng tôi có thể đặt giới hạn tìm nạp là 100 và sau đó khi người dùng cuộn đến cuối chế độ xem bảng, hãy tìm nạp 100 thực thể tiếp theo. Điều này có thể được thực hiện bằng cách sử dụng NSFetchRequest's
setFetchLimit
và setFetchOffset
.Kết hợp tìm nạp dữ liệu lõi
Tuy nhiên, những gì tôi không thể tìm ra là, nếu trong lần tìm nạp thứ hai của tôi, nơi tôi đang tìm nạp đối tượng 101-200, điều gì sẽ xảy ra với các đối tượng 1-100? Tôi có phải sử dụng riêng biệt NSFetchedResultsController
cho mỗi 100 mục và sau đó định cấu hình phương pháp nguồn dữ liệu chế độ xem bảng của mình thành truy vấn dựa trên nhiều bộ kiểm soát kết quả tìm nạp không? Hoặc bằng cách nào đó tôi có thể sử dụng cùng một NSFetchedResultsController
bằng cách nào đó tìm nạp 100 thực thể cùng một lúc, nhưng sau mỗi lần tìm nạp tiếp theo, chỉ cần thêm 100 mục tiếp theo vào 100 mục gốc?
Edit: Đây là mã của tôi:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"MessageObject" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate= [NSPredicate predicateWithFormat:@"ANY tags.tagName==%@", currentTagObject.tagName];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO selector:@selector(compare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];
Bạn có thể hiển thị việc xây dựng yêu cầu tìm nạp không? Theo như tôi biết, lấy bộ điều khiển kết quả (và tôi nghĩ rằng yêu cầu tìm nạp đơn giản, quá) sử dụng lỗi để làm điều này cho bạn. Có thể là "truy vấn" của bạn có thể được tối ưu hóa. –
Tôi đã đăng một số mã của mình. Tôi không hiểu - tại sao phải mất 20 giây để lấy các thực thể sau đó? Khi tôi đặt giới hạn là 100, nó sẽ tải xuống trong 1 giây, nhưng không có giới hạn, tìm nạp 2000 thực thể, phải mất 20 giây. – Snowman