1

異なる記述子キーでオブジェクトをソートしたい)。

問題:

異なるクラスのオブジェクトが取り込まれた 2 つの配列があります。2 つのクラスが、ソート記述子として使用する共通の属性を共有していない。

配列をアルファベット順に並べ替えて、すべてのオブジェクトを含む配列を 1 つだけ返したいと考えています。

  • Array1 = オブジェクト付き [A クラス]
    • 「名前」で並べ替え
  • Array2 = オブジェクトあり [B クラス]
    • 「タイトル」で並べ替え

FinalArray => Array の (1,2) のすべてのオブジェクトで (再び) アルファベット順に並べ替えます

4

2 に答える 2

3

次のように実行できます。

  • NSArray *result結合された配列のサイズで作成
  • result最初の配列の要素に続いて 2 番目の配列の要素を にコピーすることにより、2 つの配列を 1 つの配列に連結しますresult
  • sortedArrayUsingComparator:両方のタイプを「理解する」コンパレーターと共に使用します。

以下は骨組みの実装です。

NSArray *sortedArray = [result sortedArrayUsingComparator: ^(id obj1, id obj2) {
    NSString *key1, *key2;
    if ([obj1 isKindOfClass:['class has a title' class]]) {
         key1 = [obj1 title];
    } else { // It's the kind of objects that has a name
        key1 = [obj1 name];
    }
    if ([obj2 isKindOfClass:['class has a title' class]]) {
         key2 = [obj2 title];
    } else { // It's the kind of objects that has a name
        key2 = [obj2 name];
    }
    // Do the comparison
    return [key1 caseInsensitiveCompare:key2];
}];
于 2013-09-16T16:44:54.310 に答える