2012-01-20 48 views
0

我编写了一个应用程序,允许用户在日期选择器中输入日期,并且该应用程序会在日期到达前36小时提醒用户。我的问题是在dateFromString:。我不知道该放什么。下面是代码:iPhone:从日期选择器获取日期

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

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

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


localNotif.alertBody = @"Event tommorow!"; 

localNotif.alertAction = nil; 

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

return YES; 

}

任何帮助非常感谢,谢谢!

编辑:这是我使用,以节省他们的日期选择器输入的日期是否有帮助一些额外的代码:

- (void)viewDidLoad { 
    NSDate *storedDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"DatePickerViewController.selectedDate"]; 

    [self.datePicker setDate:storedDate animated:NO]; 
} 

这是保存数据的方法:

- (IBAction)dateChanged:(id)sender { 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

NSDate *selectedDate = [self.datePicker date]; 

[defaults setObject:selectedDate forKey:@"DatePickerViewController.selectedDate"];} 
+0

您已将事件日期作为字符串...它将转换为日期本身...以这种格式@“mm // dd/yyyy”... –

+0

噢,好的,谢谢。用户自己输入日期,这对我来说很棘手。你知道我将如何去获取他们输入的日期,并将其设置在'dateFromString'区域? – John

+0

对不起,我没有得到它...我不知道这个确切.. –

回答

2

为什么你需要一个字符串? 使得

[defaults setObject:selectedDate forKey:@"DatePickerViewController.selectedDate"];

后,你可以访问你的约会,就像

NSDate* eventDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"DatePickerViewController.selectedDate"]; 

使用字符串是不是很好用日期 - 你应该关心的区域和时间格式(12小时或24小时)等等

+0

哦太棒了,非常感谢。所以,我应该删除'NSDate * eventDate = [dateFormatter dateFromString:];'并将其切换到NSDate * eventDate = [[NSUserDefaults standardUserDefaults] objectForKey:@“DatePickerViewController.selectedDate”];'? – John

+1

是的,只需添加检查为零。您第一次在设备上启动应用程序时,userDefaults中不会存储日期。 –

+0

真棒谢谢,是的,这可能是为什么我点击与日期选择器的选项卡时,我的应用程序崩溃。我如何检查零?对于初学者问题抱歉。 – John

相关问题