2012-03-17 197 views
0

我想獲得兩次之間的差異。要找到兩次之間的差異

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self setCurrentQuestion]; 
} 


-(void)setCurrentQuestion{ 

    dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
    [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; 
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 
    startTime = [dateFormatter stringFromDate:[NSDate date]]; 
    date1 = [dateFormatter dateFromString:startTime]; 

    [self answerTapped]; 
} 

-(void)answerTapped{ 
      endtime = [dateFormatter stringFromDate:[NSDate date]]; 
      date2 = [dateFormatter dateFromString:endtime]; 
      [dateFormatter release]; 
      dateFormatter = nil; 

      NSTimeInterval * timeDifference =[date2 timeIntervalSinceDate:date1]; 


} 

我使用這個代碼來獲取開始時間和結束時間之間的差異,但我不兼容類型的表達式得到錯誤的「Inintializing‘NSTimeInterval *’(又名「雙‘)’ NSTimeInterval'(又名'雙')「在」NSTimeInterval * timeDifference = [date2 timeIntervalSinceDate:date1];「行。這個錯誤意味着什麼?如何解決這個問題?或者請告訴我,我將如何獲得時差?請幫忙。

回答

4

它的星號。您正在將timeDifference聲明爲指向NSTimeInterval的指針。這是你正確指出的雙倍。只是改爲:

NSTimeInterval timeDifference =[date2 timeIntervalSinceDate:date1]; 

此外,我認爲你的日期和字符串發佈得太早。最簡單的做法是爲日期聲明屬性。對於預ARC:

@property (retain, nonatomic) NSDate * date1; 
@property (retain, nonatomic) NSDate * date2; 

或ARC:

@property (strong, nonatomic) NSDate * date1; 
@property (strong, nonatomic) NSDate * date2; 

然後用點操作符像這樣分配:

self.date1 = [NSDate date]; 

你不需要這些字符串的。

+0

謝謝Danh。我明白了你的觀點,但是我的程序沒有收到'EXC_BAD_ACCESS'的時差。你能告訴我爲什麼會發生這種情況嗎? – hgpl 2012-03-17 05:19:49

+0

我不認爲你需要這些字符串。當你想記錄開始時間時,設置date1 = [NSDate date],當你想標記結束時,對date2做同樣的處理。你的timeDifference行看起來很好。我對你的崩潰的猜測是date1的過早發佈。我可以看到日期和字符串的聲明嗎? – danh 2012-03-17 05:28:22

+0

是的確實如此。NSString * currenttime; NSString * endtime; NSDate * date1; NSDate * date2; NSDateFormatter * dateFormatter; – hgpl 2012-03-17 05:37:29