【问题标题】:Refresh sorted tableview after core data is updated核心数据更新后刷新排序的tableview
【发布时间】:2014-08-20 23:58:41
【问题描述】:

我从核心数据填充我的表格视图。根据主键和辅助键对行进行排序。 viewDidLoad 方法包含 MOC 和获取请求代码。

用户可以通过不同的视图更新tableview中的行,数据会及时更新为显示。但是显示的数据现在没有按正确的排序顺序。

我的问题是如何对数据进行相应的排序和显示?我应该再次调用 viewDidLoad 方法来重新获取数据然后重新加载 tableview 吗?做这个的最好方式是什么?如果我应该调用 viewDidLoad 方法,应该在哪里完成?

我的代码如下所示:

- (void)viewDidLoad

{ [超级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];

}

【问题讨论】:

  • 你在用NSFetchedResultsController吗?
  • 不,我不知道。你能告诉我怎么做吗?
  • 不。但是你可以在 Apple 的开发者网站上找到很多信息。
  • Apples 自己的 Xcode 项目模板用于主从应用程序,核心数据框已选中,使用 NSFetchedResultsController。
  • 我已经检查了所有的参考资料,但不明白如何实现它。我是初学者,很多东西还是不懂。也许@fgeorgiew 说的是正确的。我将对象存储在一个数组中。上面附加了 viewDidLoad 方法。我将看看KVO。谢谢。

标签: ios iphone uitableview sorting core-data


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 2011-01-22
    • 2019-06-19
    • 2012-01-18
    相关资源
    最近更新 更多