Objective-Cの配列とコレクション
型、云々でJavaに似ている感触だなぁと勝手に解釈。
■配列
以下のようにして配列を定義する。
NSString *str[3];
str[0] = @"hoge";
str[1] = @"fuga";
str[2] = @"piyo";
for(int i = 0; i < 3; i++){
NSLog(@"%@", str[i]);
}
ちなみに、以下のようにして値がない要素にアクセスした場合、アプリケーションが終了してしまった。
NSString *str[3];
str[0] = @"hoge";
str[1] = @"fuga";
str[2] = @"piyo";
for(int i = 0; i < 4; i++){
NSLog(@"%@", str[i]);
}
当然だけど固定長だよ。
■可変長配列
NSMutableArrayクラスを使用する。可変長配列に対するアプローチもJavaなんかと似てる感触。以下のようにして定義する。
NSMutableArray *ary = [NSMutableArray arrayWithObjects: @"hoge", @"fuga", @"piyo", nil];
for(int i = 0; i < [ary count]; i++){
NSLog(@"%@", [ary objectAtIndex: (NSUInteger) i]);
}
また、以下のようにして要素を追加・削除することができる。
NSMutableArray *ary = [NSMutableArray arrayWithObjects: @"hoge", @"fuga", @"piyo", nil];
[ary addObject: @"baca"];
[ary removeObjectAtIndex: (NSUInteger) 0];
for(int i = 0; i < [ary count]; i++){
NSLog(@"%@", [ary objectAtIndex: (NSUInteger) i]);
}
上述のように、要素数はcountで取得することができる。
■ディクショナリ
ハッシュって言っちゃダメなんだろうか。とりあえず以下のようにして定義する。
NSMutableDictionary *hash = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"hoge", @"key1",
@"fuga", @"key2",
@"piyo", @"key3",
nil
];
NSArray *keys = [hash allKeys];
for(int i = 0; i < [keys count]; i++){
NSLog(@"%@", [hash objectForKey: [keys objectAtIndex:(NSUInteger)i]]);
}
要素の追加・削除は以下のように記述する。
NSMutableDictionary *hash = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"hoge", @"key1",
@"fuga", @"key2",
@"piyo", @"key3",
nil
];
[hash setObject: @"baca" forKey: @"key4"];
[hash removeObjectForKey: @"key1"];
NSArray *keys = [hash allKeys];
for(int i = 0; i < [keys count]; i++){
NSLog(@"%@", [hash objectForKey: [keys objectAtIndex:(NSUInteger)i]]);
}
キーを後ろに記述する点には注意が必要だ。ちなみに、キーは日本語でも大丈夫なようだ。
TrackBack URL :
Comments (0)