iPhone:通知中心麻烦

时间:2012-01-18 22:51:40

标签: iphone xcode notifications nsdate

我编写了一个应用程序,允许用户在UITextField中输入数据,其中一个允许用户在特定日期输入。即使应用程序根本没有运行,我也会尝试在日期为15小时后在iPhone通知中心显示提醒。

编辑:新代码 -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UILocalNotification *localNotif = [[UILocalNotification alloc] init];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMdd"];
NSDate *eventDate=[dateFormatter dateFromString:eventDateField.text];

localNotif.fireDate = [eventDate dateByAddingTimeInterval:-15*60*60];
localNotif.timeZone = [NSTimeZone defaultTimeZone];


localNotif.alertBody = @"Event Tomorrow!";

localNotif.alertAction = @"Show me";

localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication]presentLocalNotificationNow:localNotif];

}

3 个答案:

答案 0 :(得分:3)

您是否尝试将邮件dateByAddingTimeInterval:发送给谁?没有人。您需要一个消息接收器,一个可以运行该方法的对象。

[[NSDate date] dateByAddingTimeInterval: -20*60];

NSDate date是当前的日期和时间)。

答案 1 :(得分:1)

要调用[-dateByAddingTimeInterval:],您必须拥有NSDate对象。在上面的代码中,您没有。它应该看起来像:

NSDate* now = [NSDate date];
localNotif.fireDate = [now dateByAddingTimeInterval:20*60];

答案 2 :(得分:1)

将从文本字段获取的日期存储在NSDate对象eventDate中。您还需要设置日期和时间。您收到该错误的原因是应该在NSDate对象上调用dateByAddingTimeInterval:并且本身不是标识符。将本地通知的fireDate设置为

localNotif.fireDate=[eventDate dateByAddingTimeInterval:-15*60*60];

这将返回事件发生前15小时的日期。

编辑:您需要创建一个NSDateFormatter对象,并将其格式设置为meetingDateField中的存储格式。然后使用dateFromString:从文本字段中获取NSDate

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"mm'/'dd'/'yyyy"];
NSDate *eventDate=[dateFormatter dateFromString:meetingDateField.text];