4

NSDate の配列があり、配列から最大の NSDate を取得したいと考えています。私はいつでもそれらを並べ替えて最初/最後を取得することができましたが、KeyValueCoding または他の簡単なワンライナーの方法でこれを行う方法はありますか? オブジェクトに日付プロパティがある場合、valueForKeyPath@"@max.date" のようなものを使用できることはわかっていますが、オブジェクト自体が日付である場合はどうなりますか??

ありがとう

4

2 に答える 2

12

あなたが使用することができます、

NSDate *maxDate = [dateArray valueForKeyPath:@"@max.self"];

これにより、配列から最大の日付が得られます。これを行う前に配列をソートする必要はありません。

ドキュメントから、

@max 演算子は、演算子の右側にあるキー パスによって指定されたプロパティの値を比較し、見つかった最大値を返します。最大値は、指定されたキー パスにあるオブジェクトの compare: メソッドを使用して決定されます。比較されるプロパティ オブジェクトは、相互の比較をサポートする必要があります。キーパスの右側の値が nil の場合は無視されます。

@max が行いcompare:、最大値を見つけることに注意してください。

于 2013-03-01T00:32:25.377 に答える
2

@SeanDanzeiserに同意します。より具体的には、〜 70 バイトのワンライナーを次に示します。

// if dateArray is the array of dates ...
NSDate *maxDate = [[dateArray sortedArrayUsingSelector:@selector(compare:)] lastObject];
于 2013-03-01T00:21:02.150 に答える