簡體   English   中英

如何從NSDate檢索字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM