与NSDates不兼容,不兼容的指针类型相比

时间:2010-09-19 18:24:03

标签: iphone xcode comparison nsdate

嘿,我正在尝试将用户打开应用的日期与当前日期进行比较。 (基本上,他们有多长时间没有应用程序)

以下是代码:

- (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类:/)我很乐意采取替代方法来做到这一点:)

所有帮助表示赞赏,      谢谢         -Jackson Smith

3 个答案:

答案 0 :(得分:1)

本地方法timeIntervalSinceData是否返回“NSTimeInterval”(typdef double)?我猜它没有,因此错误 - 但代码不在这里看。

我们需要查看更多代码来帮助您 - 但D_DAY未声明应该很容易解决。假设它在标题中的某个位置不是#define,则需要指定该函数中的内容或文件中的更高位置。我猜你只是错过了某个特定值的#define - 至少是通过语法。

警告是因为这个错误 - 解析器在你修复之前不知道如何很好地完成任务。

答案 1 :(得分:1)

加载方法正确,以下内容适用于-[daysAfterDate:]

#define D_DAY        86400

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

1)是因为自我可能不是NSDate。使用[NSDate date]获取当前时间/日期。 2)是因为你必须定义D_DAY 3)仅因2)而发生。

我希望这会有所帮助。

以下文章也可能提供信息:(Ars Technica)

答案 2 :(得分:0)

1)我认为它谈论的是“自我”;它是一个约会?