我从核心数据填充我的tableview。行根据主键和辅助键进行排序。 viewDidLoad方法包含MOC和获取请求代码。
用户可以通过不同的视图更新tableview中的行,并且数据会立即更新为显示。但是,显示的数据现在没有按正确的排序顺序排列。
我的问题是如何对数据进行相应的排序和显示?我应该再次调用viewDidLoad方法来重新获取数据,然后重新加载tableview吗?做这个的最好方式是什么?如果我应该调用viewDidLoad方法,应该在哪里完成?
我的代码如下所示:
- (void)viewDidLoad
{ [super viewDidLoad];
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"MonitorItem"];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:
[[NSSortDescriptor alloc] initWithKey:@"show"
ascending:NO],
[[NSSortDescriptor alloc] initWithKey:@"expiry"
ascending:YES], nil]];
self.monitorItemArray = [[managedObjectContext
executeFetchRequest:fetchRequest
error:nil] mutableCopy];
}
答案 0 :(得分:0)
如果您不使用FetchedResultsController,那么您很可能将对象存储在某个集合中。然后,您可以将observer(KVO - KeyValueObserving)添加到此集合,以便在其对象发生更改时收到通知。然后,您可以处理此响应并调用[tableView reloadData];
您不应该自己调用viewDidLoad:
。如果你仍然想到它,你应该把你的视图初始化代码放在viewDidLoad:
中调用的单独方法中,然后你也可以在需要时使用它。