NSArrayクラス
- - PR -
Objective-Cの最も基本的な配列クラスは「NSArray」です。このクラスは、一度生成すると中身を変更することはできません。以下に、NSArrayの利用例を示します。
#import <Foundation/Foundation.h> |
| main.m |
※「NSLog」は、文字通りログを出力する関数で、デバッグなどに利用します。使い方はprintf関数とほぼ同じですが、NSLogの場合はオブジェクトの内容を出力できるので便利です。オブジェクトをデバッグする場合、第1引数の文字列内の指定では「%@」を指定します。また、第1引数自体もObjective-Cの文字列(NSString)で指定します。
(1)の「arrayWithObjects:」は、NSArrayの最もシンプルな生成方法です。配列に保持させたいオブジェクト群を引数として渡して配列を生成します。これは前回のNSStringのところでも解説した、インスタンスの生成から初期化までを行ってくれるメソッドです。別途、イニシャライザとして「initWithObjects:」も用意されています(引数は「arrayWithObjects:」と同じです)。
なお、NSArrayや、後述の「NSDictionary」を利用する場合、注意しておくべきことがあります。それは、オブジェクトの並びの最後に必ずnilをセットすることです。これにより、要素の終端位置を示すことになります。
(2)の「count」は配列の要素数を取得するメソッドです。
(3)は、配列から要素を取り出す方法の一部です。「objectAtIndex:」は、文字通りインデックスを指定して配列の要素を取り出します。インデックスは、C言語の通常の配列と同じく0から始まります。「lastObject」は配列の最後の要素(nilの1つ手前)を取り出します。
「subarrayWithRange:」は、NSRange構造体で範囲(開始インデックスと要素数)を指定して配列の要素を抽出し、それらを新たな配列として返すメソッドです。
(4)の「indexOfObject:」は、引数で指定したオブジェクトが配列内に存在する場合に、そのインデックスを返します。オブジェクトが存在しなかった場合、「NSNotFound」という値(定数)が返されます。
(5)の「containsObject:」は、引数で指定したオブジェクトが配列内に存在するかどうかを判定します。
(6)の「isEqualToArray:」は、2つの配列の要素が同じかどうかを判定します。
なお、上記の(4)(5)(6)のように配列内を検索してオブジェクトの突き合わせを行うようなメソッドでは、それぞれのオブジェクトの「isEqual」メソッドで比較が行われます。従って、そのクラスのisEqualメソッドの実装によって判断は異なります。デフォルトのisEqualメソッド(NSObjectのisEqualメソッド)では、インスタンス(実体)が等しい場合にYESを返します。
変更可能な配列
内容が固定となる「NSArray」に対し、自由に要素を追加・置換・削除できるのが「NSMutableArray」クラスです。以下に利用例を見てみましょう。
#import <Foundation/Foundation.h> |
| main.m |
(1)では、空っぽの状態でNSMutableArrayの配列を生成しています。(2)の「mutableCopy」は、NSArrayの配列をコピーして、可変のNSMutableArrayを生成する方法です。
NSMutableArrayはNSArrayのサブクラスなので、配列の生成、要素数の取得、要素の取り出し、要素の存在確認や位置(インデックス)の取得など、基本的な処理はすべてNSArrayのメソッドをそのまま利用できます(1つ前のNSArrayのコード例を参照してください)。
NSMutableArrayクラスで独自に実装されているのは、主に配列の中身を操作するためのメソッド群です。(3)は要素の追加・挿入や置換を行うメソッド群、(4)は要素の削除を行うメソッド群です。これらは、その配列のインスタンスそのものを直接変更します。
2/4 |
| Index | |
| 配列とループ処理を理解しよう | |
| Page1 C言語の配列 Objective-Cの配列クラス |
|
| Page2 NSArrayクラス 変更可能な配列 |
|
| Page3 ディクショナリ(連想配列) 変更可能なディクショナリ |
|
| Page4 ループ処理 forループ 列挙子を使ったループ 高速列挙を使ったループ |
|
| Cocoaの素、Objective-Cを知ろう |
| Mac OS X関連記事 |
| プログラマーを引き付けるMac OS Xの魅力 続々移行するそのワケとは Mac一筋という熱狂的なユーザーだけでなく、「面白いことをしたい」と考えるエンジニアもMac OS Xを利用し始めている。いったいなぜだろう |
|
| Mac OS XでAMP構築 3通りの方法で整備できる開発環境 Mac OS Xの上にWebアプリケーションの定番、AMP(Apache+MySQL+PHP)環境を3通りの方法で導入してみましょう |
|
| Mac OS Xで動かす軽量プログラミング言語 導入からPHP拡張モジュール組み込みまで Leopardでは、インストール直後からいくつかの軽量プログラミング言語が利用できます。早速試してみませんか? |
|
| Objective-Cは特殊な言語? Cocoaの素、Objective-Cを知ろう(1) iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう |
|
| Mac内にPHP4、5、6を同居させるコツ Mac OS X+PHPでオールインワン環境(インストール編) PHP4の開発は終了したが、移行の問題は残されている。異なるバージョンのPHPをスムーズに切り替えるには? |
|
TechTargetジャパン
- 実例で学ぶRailsアプリのテスト方法 (2011/12/22)
具体的なWebアプリを例に簡単なテストを使ったリファクタリングについ
て解説する - Railsの人気テストフレームワーク6選! (2011/8/18)
今回からテストを使ったリファクタリングを解説する。まずはRailsで人
気のあるテストフレームワークをいくつか紹介する - ActiveRecordの更新系操作 (2011/6/27)
Railsのモデル層を担当するActiveRecordを使った登録、更新、削除
など、更新系の機能を中心に見ていきます - 実例アプリで学ぶ“Railsらしさ”の基礎 (2011/5/26)
Ruby on Railsで書かれた実例アプリを取り上げて、初心者が陥りがちなコードの書き方を指摘します。より「Railsらしい」コードとは?
|
|

