gpt4 book ai didi

ios - 当新记录添加到数据库(sqlite)并更新 TableViewController 时,Objective-C 通知

转载 作者:行者123 更新时间:2023-11-28 19:39:50 25 4
gpt4 key购买 nike

我正在解析从远程通知收到的数据,然后立即将其保存在 AppDelegate 中的数据库中。但是当我在应用程序运行时收到新的远程通知时,UITableView 不会更新新数据。

我关注了这个tutorial关于如何使用sqlite。但是当它通知一个新元素被添加到数据库时,它对我不起作用,因为我的情况是 AppDelegateUITableViewController 而教程的情况是 ViewControllerUITableViewController

教程实现协议(protocol)后是这样的

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
EditInfoViewController *editInfoViewController = [segue destinationViewController];
editInfoViewController.delegate = self;
}

在我的情况下会是

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
AppDelegate *appDelegate = [segue destinationViewController];
appDelegate.delegate = self;
}

我会得到这个错误:

Cannot initialize a variable of type 'AppDelegate* __strong' with an rvalue of type' __kindofUIViewCOntroller*'

我可以为 prepareForSegue 使用什么替代方法?

我有点迷路了,所以我会很感激能得到的任何帮助。

最佳答案

是的,这个错误很明显,因为 AppDelegate 不是 UIViewController。您正在尝试推送一个 AppDelegate 对象,这就是您遇到错误的原因。

在您的情况下,如果您想在 AppDelegate 中保存新收到的通知数据,那么只需在 AppDelegate 本身中创建一个方法即可。

然后当您收到通知时,只需调用该方法即可将您的数据保存到数据库中。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

if (application.applicationState == UIApplicationStateActive) {

NSLog(@"Push received in Active State: %@", userInfo);
}
else {
NSLog(@"Push received in InActive State: %@", userInfo);
}

[self saveDataToDatabse:userInfo];
}


#pragma mark - Private methods
-(void)saveDataToDatabse:(id)data {

// your logic here

[[NSNotificationCenter defaultCenter] postNotificationName:@"NewDataSaved" object:nil];
}

在您的 ViewController.m 中,在 viewDidLoad 方法中添加观察者。

- (void)viewDidLoad{

[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTable:) name:@"NewDataSaved" object:nil];
}

-(void)reloadTable:(NSNotification)notification {

// your logic here
[self.tableView reloadData];
}

关于ios - 当新记录添加到数据库(sqlite)并更新 TableViewController 时,Objective-C 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com