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 への呼び出しに取って代わり、一般的なオブジェクトを操作するための推奨される方法です。また、独自のクラスでエミュレートするのも良いパターンです:-)

「理由」に光を当てる必要がある中心的な概念の 1 つは、不変性です。多くのオブジェクト (NSString、NSNumber など) は (少なくとも実際には) 不変であると見なされます。これは、値を一度だけ取得することを意味します: init. これにより、インスタンス化時の手法である「その他の」答え、つまりカスタム初期化子が導き出されます。

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

これにより、プロパティが今日の日付に設定されます。エラーは、ご想像のとおり、ブール値をポインターに割り当てているためです。

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