将今天的日期设置为NSDate

时间:2012-11-12 22:17:55

标签: objective-c ios nsdate

我有一个NSDate属性,如下所示,我希望用今天的日期设置它。

@property (nonatomic, copy, readwrite) NSDate *todayDate;

我尝试了以下操作,但收到错误:

NSDate *date = [[NSDate alloc] init];
self.todayDate = [date isToday];

我想,今天只是检查日期是否是今天的日期并且没有设置日期。

我遇到了2个错误:

Implicit conversion of 'BOOL' (aka 'signed char') to 'NSDate *' is disallowed with ARC
Incompatible integer to pointer conversion assigning to 'NSDate *' from 'BOOL' (aka 'signed char'); 

如何在目标C中将NSDate设置为今天的日期?

2 个答案:

答案 0 :(得分:4)

NSDate让你满意:

NSDate *today = [NSDate date];

这是Apple框架中的常见模式:语义“工厂”类方法。此调用将替换您对alloc和init的调用,并且是使用常见对象的首选方法。它也是一个很好的模式,可以在你自己的类中模拟: - )

应该阐明“为什么”的核心概念是不变性。许多对象(NSString,NSNumber等)被认为(至少在实践中)是不可变的。这意味着他们只能获得一次价值:在初始化期间。这导致“其他”答案也是实例化时间技术:a custom initializer

NSDate *today = [[NSDate alloc] initWithTimeIntervalSinceNow: 0];

答案 1 :(得分:0)

这会将您的房产设置为今天的日期。错误是因为,正如您所怀疑的那样,您正在为指针分配一个布尔值。

self.todayDate = [NSDate date];