Foundation(コレクション)

2010. 04. 08
コレクションはデータの集合を管理するもので、管理方法の違いによって色々なクラスがあります。

NSArray(配列):0から始まるインデックスに対応する要素を格納します

NSDictionary(辞書):キーと値のペアで要素を格納します

NSSet(セット):順序付けが無く、同じ要素を複数格納できない集合です

NSEnumerator(列挙子):配列や辞書などの要素を順番にアクセスします

NSIndexPath(インデックスパス):『配列を要素とした配列』の要素へのアクセスを容易にします

NSIndexSet(インデックスセット):配列のインデックスを要素とする集合です


●コレクションのクラス図

FoundationCore Foundation
NSArrayNSMutableArrayCFArrayCFMutableArray
NSDictionaryNSMutableDictionaryCFDictionaryCFMutableDictionary
NSEnumeratorNSDirectoryEnumerator--
NSIndexPath-
NSIndexSetNSMutableIndexSet--
NSSetNSMutableSetNSCountedSetCFSetCFMutableSet-


●配列

// 配列の作成
NSArray *fltNames = [NSArray arrayWithObjects:@"千早", @"やよい", @"真", nil];

// インデックスを指定して配列の要素を取得
NSString *fltName = [fltNames objectAtIndex:0];
NSLog(fltName);
//    千早


・arrayWithObjects:

+ (id)arrayWithObjects:(id)firstObj, ...

引数リストから配列を作成し、返します

配列にはNSData、NSValue、NSStringオブジェクトなど、要素を混在できます

NSArray *myArray;
NSData *aDate = [NSDate distantFuture];
NSValue *aValue = [NSNumber numberWithInt:5];
NSString *aString = @"a string";
myArray = [NSArray arrayWithObjects:aData, aValue, aString, nil]; 

firstObj:コンマ区切りでリストを指定します
最後の項目はnilを指定します


・objectAtIndex:

- (id)objectAtIndex:(NSUInteger)index

指定したインデックスのオブジェクトを返します

配列の要素数以上のインデックスを指定した場合は、NSRangeExceptionを呼び出します

index:配列内のインデックスを指定します


●辞書

// 空の辞書の作成
NSMutableDictionary *imasDic = [NSMutableDictionary dictionary];

// キーと値のペアを設定
[imasDic setObject:@"ミンゴス" forKey:@"千早"];

// 値を取得
NSString *chrVoice = [imasDic objectForKey:@"千早"];
NSLog(chrVoice);
//    ミンゴス


・dictionary

+ (id)dictionary

空の辞書を新規作成し、返します

このメソッドはNSDictionaryクラスのサブクラスであるNSMutableDictionaryを使用するために宣言されています


・setObject:forKey:

- (void)setObject:(id)anObject forKey:(id)aKey

レシーバにキーと値のペアを追加します

キーまたは値がnilの場合、NSInvalidArgumentExceptionが呼び出されます
nil値を使いたい場合はNSNullを使用してください

aKeyが既にレシーバにある場合、レシーバの以前の値オブジェクトにreleaseメッセージが送られ、その場所にanObjectが置かれます

anObject:キーと対になる値オブジェクトを指定します
この値をnilに設定してはいけません

aKey:値と対になるキーを指定します
キーはNSCopyingプロトコルに従い、copyWithZone:;を使用してコピーされます
この値をnilに設定してはいけません


・objectForKey

- (id)objectForKey:(id)aKey

指定したキーの値オブジェクトを返します
キーに対応する値が無い場合はnilを返します

aKey:取得する値のキーを指定します


●セット

// 空のセットの作成
NSMutableSet *chrSet = [NSMutableSet set];

// セットにオブジェクトを追加
[chrSet addObject:@"アサミンゴス"];
[chrSet addObject:@"ノミンゴス"];
[chrSet addObject:@"オヤスミンゴス"];

// セットの要素数をカウント
NSLog([NSString stringWithFormat:@"Set Count = %d", [chrSet count]]);
//    Set Count = 3


・set

+ (id)set

空のセットを新規作成し、返します

このメソッドはNSSetクラスのサブクラスであるNSMutableSetを使用するために宣言されています


・addObject:

- (void)addObject:(id)anObject

(既に登録されている要素でなければ)レシーバにオブジェクトを追加します

既に登録済みの場合、このメソッドはレシーバのセットおよびanObjectに何の効果も与えません

anObject:追加するオブジェクトを指定します


・count

- (NSUInteger)count

レシーバのセットの要素数を返します


●列挙子

// セットの準備
NSMutableSet *mgsSet = [NSMutableSet set];
[mgsSet addObject:@"アサミンゴス"];
[mgsSet addObject:@"ノミンゴス"];
[mgsSet addObject:@"オヤスミンゴス"];

// 列挙子の取得
NSEnumerator *mgsEnum =[mgsSet objectEnumerator];

// オブジェクトの取り出し
id mgsValue
while (mgsValue = [mgsEnum nextObject]) {
    NSLog(mgsValue);
}
//    オヤスミンゴス、アサミンゴス、ノミンゴス


・objectEnumerator

- (NSEnumerator *)objectEnumerator

レシーバのセットからオブジェクトを取り出し、列挙子として返します

NSEnumerator *enumerator = [mySet objectEnumerator];
id value;

while ((value = [enumerator nextObject])) {
    /* code that acts on the set's values */
}

このメソッドはNSSetの可変サブクラスであるNSMutableSetクラスで使用されますが、この最中にレシーバのセットを改変してはいけません

レシーバのセットに変更を加えたい場合は、allObjectsメソッドでセットのスナップショットを作って使用してください

スナップショットで加えた変更は、オリジナルのセットに反映されません


・nextObject

- (id)nextObject

コレクションの列挙子の中から次のオブジェクトを取り出します

全てのオブジェクトが取り出された場合はnilを返します

NSArray *anArray = // ... ;
NSEnumerator *enumerator = [anArray objectEnumerator];
id object;

while ((object = [enumerator nextObject])) {
    // do something with object...
}



参考文献

NSArray Class Reference

NSDictionary Class Reference

NSMutableDictionary Class Reference

NSSet Class Reference

NSMutableSet Class Reference

NSEnumerator Class Reference

仙台単身赴任生活/NSSetとライフゲーム(その1)

iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)
(2009/09/08)
木下 誠

商品詳細を見る






Wave SoundTouch music system IV
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
06 | 2017/07 | 08
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Wave SoundTouch music system IV
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR