本地通知错误iOS

时间:2013-08-23 19:32:59

标签: ios notifications uilocalnotification

当最小化应用程序时,一切都很好,但是当我尝试部署繁荣时,这个错误 *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSArrayM insertObject:atIndex:]:object不能为nil'

-(void) applicationDidEnterBackground:(UIApplication *)application
{
        NSDate *alertTime = [[NSDate date] dateByAddingTimeInterval:5];
        UIApplication* app = [[UIApplication sharedApplication] init];
        UILocalNotification* notifyAlarm = [[UILocalNotification alloc] init];
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:kAllNews]];

        NSError *error = nil;

        NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];

        NSError *jsonParsingError = nil;

        sortArray = [NSJSONSerialization JSONObjectWithData:response options:0 error:&jsonParsingError];

        if (notifyAlarm)
        {

        if ([[NSUserDefaults standardUserDefaults] objectForKey:@"news"])
        {
            newsNew = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"news"]];
        }

        if (newsNew.count > sortArray.count) {

        notifyAlarm.fireDate = alertTime;
        notifyAlarm.timeZone = [NSTimeZone defaultTimeZone];
        notifyAlarm.repeatInterval = 0;
        notifyAlarm.soundName = @"Glass.aiff";
        notifyAlarm.alertAction = @"Gipoteza";
        notifyAlarm.alertBody = @"Добавлена новая новость";
        [app scheduleLocalNotification:notifyAlarm];
    }
  }
}

1 个答案:

答案 0 :(得分:0)

一些建议:

首先;您是否尝试将代码放在applicationWillResignActive中?

为什么在代码中引用UIApplication?您已将其作为方法的参数...

尝试在代码中放置断点,以确切了解此错误发生的位置。我猜它会发生在最后一行:[app scheduleLocalNotification:notifyAlarm],并且它发生是因为你的notifyAlarm对象由于某种原因是nil。使用调试器逐步执行代码以查看该对象是否确实已设置。

也;请注意,您的代码在停用之前最多有5秒钟的时间。暂停时;没有代码可以运行。例如,如果由于某种原因您的NSURLConnection请求需要很长时间才能响应,那么您的应用将在代码完成之前暂停。