我编写了一个应用程序,允许用户在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];
}
答案 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];