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

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

作成:2011-02-18 10:23
更新:2011-11-13 21:03

■集合の要素を処理するには?

集合であるNSSetに保管されているデータを扱う場合、「全部でいくつあるか」「この値は集合に含まれているか」といったことがチェックできないといけませんね。ではそのためのメソッドも挙げておきましょう。

◯要素数を得る
NSUInteger *変数 = 
        [《NSSet*》 count];

◯オブジェクトが保管されているか調べる
BOOL 変数 = [《NSSet*》 containsObject:《id》];

countは、他のクラスで既に登場していますからわかりますね。containsObject:は、引数のオブジェクトが、そのNSSetに保管されているかどうかを調べるためのものです。返値はBOOLで、含まれていればYES、いなければNOになります。

この他、「集合の全要素を処理する」というようなことも必要でしょう。もっとも簡単なのは「集合の要素を配列などとして取り出す」というものです。これは以下のようなメソッドがあります。
SNArray *変数 = [《NSSet*》 allObjects];
NSEnumerator *変数 = [《NSSet*》 objectEnumerator];
前者は、集合の全要素をNSArrayとして取り出します。後者は、イテレータ(NSEnumerator)として取り出します。実際の利用例を、下のリスト欄に掲載しておきましょう。

ここではobjectEnumeratorNSEnumeratorとして集合の要素を取り出し、while (obj = [enm nextObject])で順に要素を取り出して出力をしています。

このように、全要素を扱う場合は、NSArrayNSEnumeratorなどの形で取り出し処理するのがNSSetの基本と言えます。NSArrayになってしまえば、後はどうにでもなりますから、ね?

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

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

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
	@autoreleasepool {
        NSMutableSet* set = [NSMutableSet setWithObjects:
                             @"tuyano",@"taro",@"hanako",@"buhi",nil];
        NSEnumerator* enm = [set objectEnumerator];
        id obj;
        while (obj = [enm nextObject]) {
            NSLog(@"%@",obj);
        }
    }
	return 0;
}
※関連コンテンツ

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