@blog.justoneplanet.info

日々勉強

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]]);
}

キーを後ろに記述する点には注意が必要だ。ちなみに、キーは日本語でも大丈夫なようだ。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment