如何通过推送通知通过 NSNotification 获取要更新的表格视图?
当我的应用通过 App Delegate 的- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
方法收到通知并且该应用当前已经在运行时,我会更新数据(通过 Core Data 存储)
弹出一个警报视图,一旦它被关闭,我打电话
[[NSNotificationCenter defaultCenter] postNotificationName:@"updateConversations" object:nil];
在表视图控制器中:
- (void)viewDidLoad {
//some setup code removed
_someData = [[GGGroups findAllSortedBy:@"lastUpdated" ascending:NO withPredicate:[NSPredicate predicateWithFormat:@"ANY users = %@", [GGUser currentUser]]] mutableCopy];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateData:) name:@"updateConversations" object:nil];
}
- (void)updateData:(NSNotification *)notification {
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
NSLog(@"Updated those conversations");
});
}
我尝试添加和删除 dispatch_async 主队列块。
它总是到达 updateData 方法(我可以看到 NSLog),tableview 本身永远不会更新。
我在这里做错了什么?
更新
根据要求提供更多代码。
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
return [_someData count];
}
此外,每个表视图单元格都配置为 _someData 的索引。
appDelegate 更新了 GGGroups 核心数据结构,因此 tableview 应该相应地更新,但这并没有发生,原因我至今不知道。