型、云々で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]]); }
キーを後ろに記述する点には注意が必要だ。ちなみに、キーは日本語でも大丈夫なようだ。