2014-02-05 3 views
4

Я пытаюсь получить интервал времени между двумя NSDates, а именно previousActivity.stopTime и previousActivity.startTime я получаю сообщение об ошибке с этим кодом:.IOS ошибка «Инициализация„NSTimeInterval *“(так называемый„двойной *“)

NSTimeInterval *previousActivityDuration = [previousActivity.stopTime timeIntervalSinceDate:previousActivity.startTime]; 

Вот сообщение об ошибке:

"Initializing 'NSTimeInterval *' (aka 'double *') with an expression of incompatible type 'NSTimeInterval' (aka 'double')"

Я не понимаю, если NSTimeInterval является ака «двойной», как это выражение инициализации несовместимыми, и как это исправить

?

Большое спасибо!

Edit:

Per @ комментарий Rmaddy, я снял звездочку. Тогда я получаю эту ошибку в строке сразу после:

Assigning to 'NSNumber *' from incompatible type 'NSTimeInterval' (aka 'double')

Вот виновная линия:

previousActivity.duration = previousActivityDuration; 
+4

NSTimeInterval - это примитивный тип. Избавьтесь от звездочки. – rmaddy

+0

См. Изменение выше. – rattletrap99

+0

Сообщение об ошибке, без сомнения, является «Инициализация» NSTimeInterval * '(aka' double * ') с выражением несовместимого типа' NSTimeInterval '(aka' double ') ', но' * 'потерялся, потому что сообщение не было правильно цитируется как «код». –

ответ

10

Вы пытаетесь сделать переменную NSTimeInterval указателя, но то, что вы действительно хотите это просто переменная NSTimeInterval. Поэтому удалите звездочку, как показано ниже:

NSTimeInterval previousActivityDuration = [previousActivity.stopTime timeIntervalSinceDate:previousActivity.startTime]; 

Ваш код пожаловался, потому что типы были разными. Обычно мы используем указатели только для объектов Objective-C, и только там, где это необходимо, мы обычно используем указатели для примитивных типов, таких как double s и т. Д.

4

Если внимательно прочитать эту ошибку, вы можете понять, что вам нужно изменить

NSTimeInterval *previousActivityDuration 

в

NSTimeInterval previousActivityDuration 

(убрать звездочки)

Если вы Cmd + щелчок NSTimeInterval вы см. эту строку:

typedef double NSTimeInterval; 

означает, что это просто примитив, а не класс.

 Смежные вопросы

  • Нет связанных вопросов^_^