NSDate の配列があり、配列から最大の NSDate を取得したいと考えています。私はいつでもそれらを並べ替えて最初/最後を取得することができましたが、KeyValueCoding または他の簡単なワンライナーの方法でこれを行う方法はありますか? オブジェクトに日付プロパティがある場合、valueForKeyPath@"@max.date" のようなものを使用できることはわかっていますが、オブジェクト自体が日付である場合はどうなりますか??
ありがとう
NSDate の配列があり、配列から最大の NSDate を取得したいと考えています。私はいつでもそれらを並べ替えて最初/最後を取得することができましたが、KeyValueCoding または他の簡単なワンライナーの方法でこれを行う方法はありますか? オブジェクトに日付プロパティがある場合、valueForKeyPath@"@max.date" のようなものを使用できることはわかっていますが、オブジェクト自体が日付である場合はどうなりますか??
ありがとう
あなたが使用することができます、
NSDate *maxDate = [dateArray valueForKeyPath:@"@max.self"];
これにより、配列から最大の日付が得られます。これを行う前に配列をソートする必要はありません。
ドキュメントから、
@max 演算子は、演算子の右側にあるキー パスによって指定されたプロパティの値を比較し、見つかった最大値を返します。最大値は、指定されたキー パスにあるオブジェクトの compare: メソッドを使用して決定されます。比較されるプロパティ オブジェクトは、相互の比較をサポートする必要があります。キーパスの右側の値が nil の場合は無視されます。
@max が行いcompare:
、最大値を見つけることに注意してください。
@SeanDanzeiserに同意します。より具体的には、〜 70 バイトのワンライナーを次に示します。
// if dateArray is the array of dates ...
NSDate *maxDate = [[dateArray sortedArrayUsingSelector:@selector(compare:)] lastObject];