Сравнение с NSDates не работает, несовместимые типы указателей - PullRequest
0 голосов
/ 19 сентября 2010

Эй, я пытаюсь сравнить дату, в которую пользователь открывает приложение, с датой, в которой оно находится в данный момент.(в основном, как долго у них было приложение в днях)

Вот код:

- (NSInteger) daysAfterDate: (NSDate *) aDate
{
    NSTimeInterval ti = [self timeIntervalSinceDate:aDate]; //#1
    return (NSInteger) (ti / D_DAY); //#2
}  //#3

-(void)load {

        NSDate *birthdate = [prefs objectForKey:@"Birthdate"];

    rock_Age =  daysAfterDate(birthdate);

}

ошибки:

1.) он говорит мне о несовместимых типахв инициализации 2.) D_DAY Undecared

предупреждение:

3.) управление достигает конца не пустой функции

Если я сделал это совершенно неправильно (потому что в течение жизния не могу понять класс NSDate: /) я бы с радостью воспользовался альтернативой этому :)

вся помощь приветствуется, спасибо -Джексон Смит

Ответы [ 3 ]

1 голос
/ 19 сентября 2010

Метод загрузки корректный, следующее должно работать для -[daysAfterDate:].

#define D_DAY        86400

-(NSInteger)daysAfterDate:(NSDate *)aDate {
    NSTimeInterval ti = [[NSDate date] timeIntervalSinceDate:aDate];
    return (NSInteger) (ti / D_DAY);
}

1), потому что self, вероятно, не NSDate.Используйте [NSDate date], чтобы получить текущее время / дату.2) потому что вы должны определить D_DAY 3) происходит только из-за 2).

Надеюсь, это поможет.

Следующая статья также может быть информативной: (ArsTechnica)

1 голос
/ 19 сентября 2010

Локальный метод timeIntervalSinceData возвращает "NSTimeInterval" (typdef double)?Я предполагаю, что это не так, поэтому ошибка - но код здесь не для того, чтобы увидеть.

Нам нужно увидеть немного больше кода, чтобы помочь вам - но незадекларированный D_DAY должен легко решаться,Предполагая, что это не #define где-то в ваших заголовках, вам нужно указать, что находится в этой функции или выше в файле.Я предполагаю, что вы просто пропускаете где-то #define, который вводит определенное значение - по крайней мере, по синтаксису.

Предупреждение из-за этой ошибки - парсер не знает, как правильно завершить всепока вы не исправили это.

0 голосов
/ 19 сентября 2010

для 1) я думаю, что это говорит о «я», это дата?

...