1

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

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

我尝试了以下方法,但出现错误:

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

我猜,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'); 

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

4

2 回答 2

4

NSDate为您提供:

NSDate *today = [NSDate date];

这是 Apple 框架中的常见模式:语义“工厂”类方法。此调用取代了您对 alloc 和 init 的调用,并且是处理公共对象的首选方式。在你自己的类中模拟也是一个很好的模式:-)

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

NSDate *today = [[NSDate alloc] initWithTimeIntervalSinceNow: 0];
于 2012-11-12T22:22:04.573 回答
0

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

self.todayDate = [NSDate date];
于 2012-11-12T22:21:40.433 回答