辞書と集合のクラス (7/7)
作成:2011-02-18 10:23
更新:2011-11-13 21:03
更新:2011-11-13 21:03
■集合の要素を処理するには?
集合であるNSSetに保管されているデータを扱う場合、「全部でいくつあるか」「この値は集合に含まれているか」といったことがチェックできないといけませんね。ではそのためのメソッドも挙げておきましょう。
◯要素数を得る
◯オブジェクトが保管されているか調べる
countは、他のクラスで既に登場していますからわかりますね。containsObject:は、引数のオブジェクトが、そのNSSetに保管されているかどうかを調べるためのものです。返値はBOOLで、含まれていればYES、いなければNOになります。
この他、「集合の全要素を処理する」というようなことも必要でしょう。もっとも簡単なのは「集合の要素を配列などとして取り出す」というものです。これは以下のようなメソッドがあります。
ここではobjectEnumeratorでNSEnumeratorとして集合の要素を取り出し、while (obj = [enm nextObject])で順に要素を取り出して出力をしています。
このように、全要素を扱う場合は、NSArrayやNSEnumeratorなどの形で取り出し処理するのがNSSetの基本と言えます。NSArrayになってしまえば、後はどうにでもなりますから、ね?
◯要素数を得る
NSUInteger *変数 =
[《NSSet*》 count];
◯オブジェクトが保管されているか調べる
BOOL 変数 = [《NSSet*》 containsObject:《id》];
countは、他のクラスで既に登場していますからわかりますね。containsObject:は、引数のオブジェクトが、そのNSSetに保管されているかどうかを調べるためのものです。返値はBOOLで、含まれていればYES、いなければNOになります。
この他、「集合の全要素を処理する」というようなことも必要でしょう。もっとも簡単なのは「集合の要素を配列などとして取り出す」というものです。これは以下のようなメソッドがあります。
SNArray *変数 = [《NSSet*》 allObjects];前者は、集合の全要素をNSArrayとして取り出します。後者は、イテレータ(NSEnumerator)として取り出します。実際の利用例を、下のリスト欄に掲載しておきましょう。
NSEnumerator *変数 = [《NSSet*》 objectEnumerator];
ここではobjectEnumeratorでNSEnumeratorとして集合の要素を取り出し、while (obj = [enm nextObject])で順に要素を取り出して出力をしています。
このように、全要素を扱う場合は、NSArrayやNSEnumeratorなどの形で取り出し処理するのがNSSetの基本と言えます。NSArrayになってしまえば、後はどうにでもなりますから、ね?
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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プログラミング入門」に戻る