[英]How do I retrieve a strings from an NSDate?
下面的函數(即dateChanged())由UIDatePickersolve觸發。 我的問題是
NSLog(@"Future: %@", futureDate);
返回“ null”。 然而,
NSLog(@"Today: %@", today);
效果很好。
我知道將發件人轉換為UIDatePicker,可以使用以下方法解決問題:
futureDate = [dateFormat stringFromDate:sender.date];
但是我不明白為什么我不能將發件人轉換為NSDate。 任何見解將不勝感激。
//- (IBAction)dateChanged:(UIDatePicker*)sender {
- (IBAction)dateChanged:(NSDate *)sender {
NSDate* todaysDate = [NSDate date];
NSDateFormatter* dateFormat;
dateFormat=[[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM d, yyyy hh:mm:ssa"];
NSString * today;
NSString * futureDate;
today=[dateFormat stringFromDate:todaysDate];
NSLog(@"Today: %@", today);
futureDate = [dateFormat stringFromDate:sender];
NSLog(@"Future: %@", futureDate);
}
當然,您可以將發件人轉換為NSDate *。 或UIButton *-或其他。 但是,它不會改變以下事實:日期選擇器實現發送UIDatePicker *作為委托消息的參數,並且強制轉換將無效。 最靈活的委托消息將id作為返回參數的類型,但是傳遞的對象始終是某個類的對象。 而且,Objective-c強制轉換僅通過代碼完成和對強制轉換的類的警告,使調試和開發過程更加容易。
需要將其強制轉換為UIDatePicker而不是NSDate。 同樣,在Interface Builder中將傳入的對象從類型id更改為本機類型也很容易。 這樣可以在接口文件和實現文件中正確進行連接。 當使用諸如UIButtons之類的對象的自定義子類時,我偶爾會這樣做。
- (IBAction) dateChanged:(UIDatePicker *)sender {
NSDate* todaysDate = [NSDate date];
NSDateFormatter* dateFormat;
dateFormat=[[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM d, yyyy hh:mm:ssa"];
NSString * today;
NSString * futureDate;
today=[dateFormat stringFromDate:todaysDate];
NSLog(@"Today: %@", today);
futureDate = [dateFormat stringFromDate:sender.date];
NSLog(@"Future: %@", futureDate);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.