2012-03-17 1 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 '(aka' double ') "в строке" NSTimeInterval * timeDifference = [date2 timeIntervalSinceDate: date1]; ". Что означает эта ошибка? Как это решить? Или скажите мне, как я получу разницу во времени? Пожалуйста помоги.

ответ

4

Его звездочкой. Вы объявляете timeDifference как указатель на NSTimeInterval. Это просто двойной, как вы правильно указываете. Просто перейдите на:

NSTimeInterval timeDifference =[date2 timeIntervalSinceDate:date1]; 

Кроме того, я думаю, что ваши даты и строки освобождаются слишком рано. Самое простое - объявить свойства для ваших дат. Для предварительной АРК:

@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

+0

Я не думаю, что вам нужны эти струны вообще. Когда вы хотите записать время начала, установите дату1 = [NSDate date] ;, когда вы хотите отметить конец, сделайте то же самое с date2. Ваша линия TimeDifference выглядит отлично. Моя догадка о вашем крахе - это преждевременный выпуск даты1. Могу ли я увидеть объявления дат и строк? – danh

+0

Да, конечно. Вот оно, NSString * currenttime; NSString * endtime; NSDate * date1; NSDate * дата2; NSDateFormatter * dateFormatter; – hgpl