gpt4 book ai didi

iphone - 尝试取消本地通知时应用程序抛出 'NSInvalidArgumentException'

转载 作者:行者123 更新时间:2023-11-29 04:30:55 27 4
gpt4 key购买 nike

我的代码抛出以下异常:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]' 

上线:

[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationMonday];

在代码块中:

if ([[defaults objectForKey:@"dailyReminder"] isEqualToString:@"1"]){
//Schedule Notifications for each checked day
if ([[defaults objectForKey:@"dailyReminderMonday"] isEqualToString:@"1"])
{
//Set up the local notification
appDelegate.dailyNotificationMonday = [[UILocalNotification alloc] init];
if(appDelegate.dailyNotificationMonday){
//Set fire date to alert time
appDelegate.dailyNotificationMonday.fireDate = mondayFireTime;
//Set Alert body
appDelegate.dailyNotificationMonday.alertBody = textField.text;
//Set time zone to default
appDelegate.dailyNotificationMonday.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
appDelegate.dailyNotificationMonday.repeatInterval = NSWeekCalendarUnit;

// schedule notification
UIApplication *app = [UIApplication sharedApplication];
[app scheduleLocalNotification:appDelegate.dailyNotificationMonday];

NSLog(@"Monday Fire Date: %@", appDelegate.dailyNotificationMonday.fireDate);
}
}
else {
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationMonday];
}

if ([[defaults objectForKey:@"dailyReminderTuesday"] isEqualToString:@"1"])
{
//Set up the local notification
appDelegate.dailyNotificationTuesday = [[UILocalNotification alloc] init];
if(appDelegate.dailyNotificationTuesday){
//Set fire date to alert time
appDelegate.dailyNotificationTuesday.fireDate = tuesdayFireTime;
//Set Alert body
appDelegate.dailyNotificationTuesday.alertBody = textField.text;
//Set time zone to default
appDelegate.dailyNotificationTuesday.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
appDelegate.dailyNotificationTuesday.repeatInterval = NSWeekCalendarUnit;

// schedule notification
UIApplication *app = [UIApplication sharedApplication];
[app scheduleLocalNotification:appDelegate.dailyNotificationTuesday];

NSLog(@"Tuesday Fire Date: %@", appDelegate.dailyNotificationTuesday.fireDate);
}
}
else {
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationTuesday];
}

if ([[defaults objectForKey:@"dailyReminderWednesday"] isEqualToString:@"1"])
{
//Set up the local notification
appDelegate.dailyNotificationWednesday = [[UILocalNotification alloc] init];
if(appDelegate.dailyNotificationWednesday){
//Set fire date to alert time
appDelegate.dailyNotificationWednesday.fireDate = wednesdayFireTime;
//Set Alert body
appDelegate.dailyNotificationWednesday.alertBody = textField.text;
//Set time zone to default
appDelegate.dailyNotificationWednesday.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
appDelegate.dailyNotificationWednesday.repeatInterval = NSWeekCalendarUnit;

// schedule notification
UIApplication *app = [UIApplication sharedApplication];
[app scheduleLocalNotification:appDelegate.dailyNotificationWednesday];

NSLog(@"Wednesday Fire Date: %@", appDelegate.dailyNotificationWednesday.fireDate);
}
}
else {
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationWednesday];
}

if ([[defaults objectForKey:@"dailyReminderThursday"] isEqualToString:@"1"])
{
//Set up the local notification
appDelegate.dailyNotificationThursday = [[UILocalNotification alloc] init];
if(appDelegate.dailyNotificationThursday){
//Set fire date to alert time
appDelegate.dailyNotificationThursday.fireDate = thursdayFireTime;
//Set Alert body
appDelegate.dailyNotificationThursday.alertBody = textField.text;
//Set time zone to default
appDelegate.dailyNotificationThursday.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
appDelegate.dailyNotificationThursday.repeatInterval = NSWeekCalendarUnit;

// schedule notification
UIApplication *app = [UIApplication sharedApplication];
[app scheduleLocalNotification:appDelegate.dailyNotificationThursday];

NSLog(@"Thursday Fire Date: %@", appDelegate.dailyNotificationThursday.fireDate);
}
}
else {
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationThursday];
}

if ([[defaults objectForKey:@"dailyReminderFriday"] isEqualToString:@"1"])
{
//Set up the local notification
appDelegate.dailyNotificationFriday = [[UILocalNotification alloc] init];
if(appDelegate.dailyNotificationFriday){
//Set fire date to alert time
appDelegate.dailyNotificationFriday.fireDate = fridayFireTime;
//Set Alert body
appDelegate.dailyNotificationFriday.alertBody = textField.text;
//Set time zone to default
appDelegate.dailyNotificationFriday.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
appDelegate.dailyNotificationFriday.repeatInterval = NSWeekCalendarUnit;

// schedule notification
UIApplication *app = [UIApplication sharedApplication];
[app scheduleLocalNotification:appDelegate.dailyNotificationFriday];

NSLog(@"Friday Fire Date: %@", appDelegate.dailyNotificationFriday.fireDate);
}
}
else {
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationFriday];
}

if ([[defaults objectForKey:@"dailyReminderSaturday"] isEqualToString:@"1"])
{
//Set up the local notification
appDelegate.dailyNotificationSaturday = [[UILocalNotification alloc] init];
if(appDelegate.dailyNotificationSaturday){
//Set fire date to alert time
appDelegate.dailyNotificationSaturday.fireDate = saturdayFireTime;
//Set Alert body
appDelegate.dailyNotificationSaturday.alertBody = textField.text;
//Set time zone to default
appDelegate.dailyNotificationSaturday.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
appDelegate.dailyNotificationSaturday.repeatInterval = NSWeekCalendarUnit;

// schedule notification
UIApplication *app = [UIApplication sharedApplication];
[app scheduleLocalNotification:appDelegate.dailyNotificationSaturday];

NSLog(@"Saturday Fire Date: %@", appDelegate.dailyNotificationSaturday.fireDate);
}
}
else {
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationSaturday];
}

if ([[defaults objectForKey:@"dailyReminderSunday"] isEqualToString:@"1"])
{
//Set up the local notification
appDelegate.dailyNotificationSunday = [[UILocalNotification alloc] init];
if(appDelegate.dailyNotificationSunday){
//Set fire date to alert time
appDelegate.dailyNotificationSunday.fireDate = sundayFireTime;
//Set Alert body
appDelegate.dailyNotificationSunday.alertBody = textField.text;
//Set time zone to default
appDelegate.dailyNotificationSunday.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
appDelegate.dailyNotificationSunday.repeatInterval = NSWeekCalendarUnit;

// schedule notification
UIApplication *app = [UIApplication sharedApplication];
[app scheduleLocalNotification:appDelegate.dailyNotificationSunday];

NSLog(@"Sunday Fire Date: %@", appDelegate.dailyNotificationSunday.fireDate);
}
}
else {
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationSunday];
}


}
else {
//Remove all daily notifications
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationMonday];
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationTuesday];
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationWednesday];
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationThursday];
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationFriday];
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationSaturday];
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationSunday];
}

我的 AppDelegate 中也有这段代码:

//Initialze daily notifications
dailyNotificationMonday = [[UILocalNotification alloc] init];
dailyNotificationTuesday = [[UILocalNotification alloc] init];
dailyNotificationWednesday = [[UILocalNotification alloc] init];
dailyNotificationThursday = [[UILocalNotification alloc] init];
dailyNotificationFriday = [[UILocalNotification alloc] init];
dailyNotificationSaturday = [[UILocalNotification alloc] init];
dailyNotificationSunday = [[UILocalNotification alloc] init];

//Initialize submition notifications
submitNotification = [[UILocalNotification alloc] init];
badgerNotification = [[UILocalNotification alloc] init];

//Initialize Automatic backup notification
automaticBackupNotification = [[UILocalNotification alloc] init];

仅在应用程序首次启动时调用一次。

我根本不习惯使用本地通知,但我不明白这里发生了什么,在我看来,我正在尝试取消一个不存在的通知?

如有任何建议,我们将不胜感激。

谢谢

泰氨酸

最佳答案

看起来appDelegate.dailyNotificationMondaynil。这似乎不是传递给 -cancelLocalNotification: 的有效值。

你试过吗:

if (appDelegate.dailyNotificationMonday)
[[UIApplication sharedApplication] cancelLocalNotification:appDelegate.dailyNotificationMonday];

希望对您有所帮助。

关于iphone - 尝试取消本地通知时应用程序抛出 'NSInvalidArgumentException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11744391/

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