変更可能なコレクションの操作


コレクションの不透明型 CFArray、CFDictionary、CFSet、および CFBag は、値の追加、値の削除、値の置き換えなど、変更可能なコレクションに含まれる値を操作するための同様の関数のセットを提供します。コレクションがキーと値の一意性を保証するかどうかによって、動作にいくらかの違いがあります。表 1 に、変更可能な関数の動作をまとめました。"操作" 列は、CFDictionaryReplaceValue の "Replace" などの変更可能関数にあるパラメータを使用する、操作の型を識別しています。


表 1 : 変更可能コレクションの操作の意味


操作コレクションの型どんな意味があるか
追加(Append)CFArray他のすべての値の後に値を挿入 (index = count)。
挿入CFArrayコレクションの与えられたインデックスに値を挿入。
追加(Add)CFArray
以外の全て
CFDictionary と CFSet の場合は、値がない場合は値を追加し、ある場合は何もしません。CFBag の場合、既にある場合も値を追加します。
置換すべて指定された値がある場合は、別の値に置き換えます。それ以外の場合は何もしません。
設定すべてない場合は値を追加し、ある場合は置き換えます。
削除すべてある場合は値を削除し、ない場合は何もしません。


固定サイズの可変コレクションでは、容量制限を超えて追加しないように注意しなければなりません。固定サイズのコレクションを使用すると、必要な数だけ値を追加できますが、容量を超えたときにも注意しません。ただし、これを行うと、望ましくない、定義されていない動作が発生する可能性が高くなります。


CFArray 型は、特別な 1 つの変更操作を特色としています。CFArraySortValues 関数を使用すると、配列に含まれる値をソートできます。値を比較するには、CFComparatorFunction 型に準拠しなければならないコンパレータ関数が使用されます。リスト 1 に、CFArraySortValues 関数の使用例を示します。


リスト 1 : 配列のソート


CFMutableArrayRef createSortedArray(CFArrayRef anArray) {
    CFIndex count = CFArrayGetCount(anArray);
    CFMutableArrayRef marray = CFArrayCreateMutableCopy(NULL,
     count, anArray);
    CFArraySortValues(marray, CFRangeMake(0, count),
     (CFComparatorFunction)CFStringCompare, NULL);
    return marray;
}


CFStringCompare 関数は、この場合、CFString オブジェクトを比較するために使用されています。Core Foundation は、CFComparatorFunction 型の他のコンパレータ関数、特にCFDateCompareCFNumberCompare を提供します。配列が Core Foundation オブジェクトを保持している場合、適切な既に定義されたコンパレータ関数を CFArraySortValues 関数に渡して、それらのオブジェクトをソートすることができます。


前の章 次の章



目次
Xcode の新機能

  • 序文
  • この文書の構成
  • コレクションの共通の特徴
  • 動作は呼び出し関数によって決定される
    大部分のコレクションが変更不可能な変種を提供
  • コレクションの型
  • 配列
    辞書
    セットとバッグ
    樹 (Trees)
    コレクションのカスタマイズ
  • コレクションの作成とコピー
  • カスタムコレクション呼び出し関数の定義
    コレクションの値を取得
    コレクションの検索
    変更可能なコレクションの操作
    コレクションにプログラム定義関数を適用
  • 樹構造の作成と使用
  • CFTree オブジェクトの作成
    親に樹を追加する
    子の樹の取得
    CFTree 構造体でのその他の操作
    文書改訂履歴












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)