核心数据更新后刷新排序的tableview

时间:2014-06-30 14:59:04

标签: ios iphone uitableview sorting core-data

我从核心数据填充我的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];

}

1 个答案:

答案 0 :(得分:0)

如果您不使用FetchedResultsController,那么您很可能将对象存储在某个集合中。然后,您可以将observer(KVO - KeyValueObserving)添加到此集合,以便在其对象发生更改时收到通知。然后,您可以处理此响应并调用[tableView reloadData];

您不应该自己调用viewDidLoad:。如果你仍然想到它,你应该把你的视图初始化代码放在viewDidLoad:中调用的单独方法中,然后你也可以在需要时使用它。