libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

辞書と集合のクラス (5/7)

作成:2011-02-18 09:57
更新:2011-11-13 21:01

■データを編集できるNSMutableSet

NSArrayNSDictionaryと同様、NSSetにも、データの編集が可能なサブクラスが用意されています。それが「NSMutableSet」です。これはNSSetに、データ編集用の機能を追加したものです。

インスタンスを作成するには、先の「set」メソッドの他、以下のようなコンビニエンスコンストラクタが便利でしょう。引数には、予め確保しておく要素数を指定します。もちろん、これまた例によって、必要に応じて調整されるのでメモリが足りなくなるような心配はありません。
NSMutableSet *変数 = [NSMutableSet setWithCapacity:《NSUInteger》];
データの追加や削除のためのメソッドも増えています。まず追加からです。これは、オブジェクトを1つだけ追加するものと、NSArrayに保管されたオブジェクトをまとめて追加するものがあります。
[《NSMutableSet*》 addObject:《id》];
[《NSMutableSet*》addObjectsFromArray:《NSArray*》];
似たようなものはNSSetにもありましたが、こちらは「自身のデータを変更する」という点が違います。続いて削除ですが、これも複数用意されています。
[《NSMutableSet*》 removeAllObjects];
[《NSMutableSet*》 removeObject:《id》];
前者は、全データを削除するもので、後者は、引数に指定したオブジェクトが保管されていれば、それを削除します。

NSSetは、NSArrayのように順番付けがされていませんから、「この場所に挿入する」というような処理は必要ありませんし、NSDictionaryのように「このキーの値を削除する」というようなこともありません。ただ、値を追加し、削除する、それだけしかありません。とてもシンプルなクラスといえますね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableSet* set = [NSMutableSet setWithCapacity:1];
        [set addObject:@"tuyano"];
        [set addObject:@"taro"];
        [set addObject:@"hanako"];
        [set addObject:@"taro"];
        [set removeObject:@"taro"];
        NSLog(@"%@",set);
   }
   return 0;
}
※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る