どうも。
NSDate同士の比較。
これまで機会がありそうでなかったので、
どうやるんだろうかと...。
もうObjective-Cに関わって何年にもなって、
Swiftも出てきたというのに、
こういうことがちょいちょいありますw
ググれば即出てきますが、
こんなカンジです。
NSDate *date1;
NSDate *date2;
(中略)
NSComparisonResult result = [date compare:date2];
switch (result) {
case NSOrderedSame:
// date1 == date2
break;
case NSOrderedAscending:
// date1 < date2
break;
case NSOrderedDescending:
// date1 > date2
break;
}
NSComparisonResultはNSNumberの比較でも使いますね。
NSNumberの比較というのも、
個人的にあまりしたことがありませんが...。
NSDateはNSDateFormatter使って、
文字列から生成することもあります。
元になる文字列が、
・フォーマット違反
・日付として無効な数値
になっているなどの場合はnilが返ってきます。
まぁ、ここまでは合点がいきます。
問題なのは、
その後のcompareです。
nilとのcompareは、
NSOrderedSameが返ってきてしまう...。
文字列が信用できるならいいんですが、
今回は文字列が人の手による入力で、
しかも事前にはチェックすらできない状況だったりします。
仕方ないので、
ある程度泥くさいチェックを書かなきゃいけませんね...。
それでは。
ちゃお☆
まこぴー。