Ví dụ tôi đã NSFetchedResultsController gọi tại ListController gọi FetchControllerTại sao chúng tôi không thể thay đổi FetchRequest tại NSFetchedResultsController?
+(NSFetchRequest *)fetchRequestInContext: (NSString*) entityName : (NSPredicate *) predicate : (NSString*) sortKey : (BOOL) sortAscending;
+(NSFetchedResultsController *) searchControllerInContext: (NSString*) entityName : (NSPredicate *) predicate : (NSString*) sortKey : (BOOL) sortAscending
{
NSFetchRequest *request = [self fetchRequestInContext:entityName :predicate :sortKey :sortAscending];
NSFetchedResultsController * FRC=[[[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:[ThreadClass managedObjectContext] sectionNameKeyPath:Nil cacheName:Nil]autorelease];
NSLog(@"FRC : %@",FRC);
return FRC;
}
nhìn vào mã mà, tôi gọi searchControllerInContext khi tôi muốn làm cho NSFetchedResultsController và sau đó phí phạm nó với mã này:
if (![[self ListController].FetchController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
vấn đề là Tôi không muốn luôn thực hiện Tìm nạp khi yêu cầu thay đổi, tôi muốn làm cho nó dễ dàng với
[self ListController].FetchController.fetchRequest=[self FunctionTogetNewRequest];
nhưng [tự ListController] .FetchController.fetchRequest là chỉ đọc ..
Tôi muốn làm điều này bởi vì tôi không muốn perfomFetch một lần nữa và một lần nữa .. tôi có thể làm điều đó?
Ý tôi là, nếu tôi có chương trình cung cấp bản ghi dựa trên nội dung người dùng đưa vào hộp tìm kiếm, tôi có nên tạo bộ điều khiển mới mỗi khi nội dung hộp tìm kiếm thay đổi không? Điều đó thật kỳ lạ. Tôi nghĩ rằng toàn bộ các điểm sử dụng NSFetchedResultsController là vì vậy chúng tôi không phải làm điều đó?
Điều gì sẽ xảy ra nếu tôi lưu trữ kết quả? Tôi có cần gọi lại performFetch nếu tôi không lưu lại kết quả không? –
Sửa đổi yêu cầu tìm nạp sẽ làm cho kết quả được lưu trong bộ nhớ cache của bạn không hợp lệ. Bất cứ khi nào bạn sửa đổi yêu cầu tìm nạp, bạn nên tìm nạp lại tập kết quả của mình. –
Trong khi điều này có thể hoạt động, hãy xem xét những gì Apple viết trong tài liệu của nó: 'QUAN TRỌNG Bạn không được sửa đổi fetchRequest sau khi gọi phương thức này [NSFetchedResultsController init method]. Ví dụ: bạn không được thay đổi vị từ hoặc thứ tự sắp xếp.' – fabb