1

したがって、Church と呼ばれるカスタム オブジェクトを含む NSArray があります。そして、各教会には一連のミサの時間があります。そのため、教会には、ユーザーの現在の時刻に最も近い質量を計算する方法があります。

-(NSDate *)closestTimeTo:(NSDate *)currentTime

オブジェクトごとにそのメソッドによって返された結果 (NSDate) によって、Church の NSArray をソートできるようにしたいと考えています。基本的に、最も近い時間と場所でソートされた大衆のソートされたリストを取得します。

カテゴリを使用していますが、コア データ オブジェクトであるため、最も近い時間をプロパティとして保存できません。また、位置情報サービスのためにこれらのメソッドが常に呼び出されるため、これらの値をコア データに保存することもお勧めできません。

オブジェクトのメソッドの結果を使用してそのような配列をソートする方法についてのアイデアはありますか?

4

2 に答える 2

2

次のブロックを試してください。それは直接(または少なくともマイナーな変更で)役立ちます。

NSArray *sortedArray;
sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    NSDate *first = [(Church*)a closestTimeTo:currentTime];
    NSDate *second = [(Church*)b closestTimeTo:currentTime];
    return [first compare:second];
}];
于 2012-06-14T14:03:10.370 に答える
1

別の Church クラスを受け取り、そのオブジェクトを最初にするか最後にするかに応じてNSOrderedSameNSOrderedAscendingまたはを返す新しいメソッドをクラスに作成します。NSOrderedDescendingそれを見つけるためにあなたのclosestTimeTo方法を使用してください。次に、メソッドでNSArraysortedArrayUsingSelector呼び出しを使用します。

于 2012-06-14T14:04:08.280 に答える