我有一个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设置为今天的日期?
答案 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];