タグ

ブックマーク / konton.ninpou.jp (10)

  • アプリケーションのローカライズ(多言語対応)方法

    アプリケーションのローカライズとは iPhoneアプリケーションはテンプレートから作成した初期段階では、英語にしか対応しません。 システム側が用意しているボタンであれば、そのままでも表示がユーザーの使用言語により変化するものもあります。 でもラベルなどでユーザーの使用する言語により表示内容を変更する場合には、ローカライズを行わなければなりません。 標準言語の変更 まず第一に、そのアプリケーションを日語のユーザーのみが使う場合を考えてみましょう。 この場合、ユーザーインターフェースの表示は全部日語で作っているでしょうから、 info.plistファイルに手を加えるだけで事足ります。 Localization native development regionキーの値をJapanに、Localizationsキーの値をJapaneseに変更しましょう。 複数言語への対応 では標準の言語は英

  • ちょっとだけ本格的なiPhone Core Dataアプリケーションへの拡張

    関連を使った拡張を行う 以前の記事「初めてのCore Data on iPhone」でCore Dataの超簡易サンプルとして紹介した「FirstCoreData」ですが、前回の説明では関連について全く触れていませんでした。 そこで今回は前回のサンプルに手を加えて、関連を使用した発展バージョンにしてみます。ちなみにこれもiPhone SDK 3.1.2用です。 残念ながら現在のXcodeでは操作方法が異なる部分があるため、そのまま応用することはできません。 基方針 まず、基的な設計についてですが、関連を使うために2つのエンティティからなるデータベースにします。親オブジェクトの中に子オブジェクトが複数格納されるスタイルです。 とりあえず今回はそれぞれのオブジェクトに名前を付けられるようにし、それをナビゲーションバー付きのテーブルビューで行ったり来たりできるようにします。 名前はテキストフ

  • NSArrayについて

    NSArrayとは NSArrayはNSObjectを親オブジェクトとするオブジェクトの集合を格納するオブジェクトです。順番のあるデータの格納に向いています。 中に入れたオブジェクトはそれぞれ0から順番に番号が割り当てられて管理されます。番号の型はNSUIntegerです。 NSArrayの中にさらに別のNSArrayを入れたり、NSDictionaryを入れたりできます。 さらにそのNSArrayやNSDictionaryにNSArrayを格納して…ということで階層構造のデータを構築できます。 代表的なメソッド(目的別) オブジェクトを列挙してNSArrayを作りたい - initWithObjects: ファイルにNSArrayの内容を保存したい - writeToFile:atomically: ファイルの内容からNSArrayオブジェクトを作りたい - initWithConten

  • Objective-CでのDelegateについて

    Objective-CでのDelegateとは iPhoneアプリケーション開発において、結構頻繁に出てくるのがこのDelegateという言葉です。プロジェクトを作れば必ず~AppDelegateというクラスが作られますし、 他にも様々な場面で~Delegateというものを目にすることになります。Delegateとは代理人とか代表者とか委譲などという意味があります。 通常あるオブジェクトへと送られてくるメッセージはそのオブジェクトで処理するべきなのですが、いちいちそのオブジェクトのファイルを作るのは面倒という場合があります。 その場合に、別のクラスに送られてきたメッセージを丸投げしてしまうと、そのオブジェクト自体に特有の処理を書くなどしなくて良くなるため便利、というわけです。 たとえば、iPhoneアプリケーションで画面にメッセージを表示するUIAlertViewというクラスがあります。

  • iPhoneアプリケーション開発: Objective-Cにおけるメモリ管理

    メモリ管理の大まかな原則 C言語と共通の部分について、メモリ管理で気をつけることは特にありません。Cで気をつけることと共通です。 自分がmalloc()で確保したメモリは忘れずfree()で開放しましょうということだけです。従って、多くの場合に問題になるのはObjective-C固有の部分です。 Objective-Cのオブジェクトはretain countというものを持っています。生成すると0から1になります。 そのオブジェクトに関連付けられている変数名でretainをすれば、カウントが1増えます。 releaseをするとカウントが1減ります。run loopと呼ばれるシステムへの応答処理へ入った時、 このカウントが0になっているものはメモリ上から消えるようになっています。 autoreleaseとした場合には、適当と思われる部分で自動的に開放されるので、自分でreleaseを行う必要は

  • NSMutableArrayについて

    NSMutableArrayとは NSMutableArrayはNSObjectを親オブジェクトとするオブジェクトの集合を格納するオブジェクトです。順番のあるデータの格納に向いています。 中に入れたオブジェクトはそれぞれ0から順番に番号が割り当てられて管理されます。番号の型はNSUIntegerです。 NSArrayとの大きな違いは、こちらは可変長だということです。プログラム中の好きな場所で要素の数を足したり減らしたりできます。そのためUITableViewの各行のデータを格納するのによく利用されます。なお、NSArrayにあるメソッドはこちらでも全て使えます。そのため以下ではNSMutableArray特有のものだけを取り上げます。 代表的なメソッド(目的別) オブジェクトを末尾に追加したい - addObject: オブジェクトを途中に挿入したい - insertObject:atIn

  • UITableViewの使い方その1:基本編

    UITableViewの使い方1:基UITableViewを使う場合に知らなければ困る基設定の説明です。 English top page UITableViewとは iPod機能でもよくお世話になるリストの表示を受け持つ部分です。セクションにより区切られた中にセルという表示単位を持っています。上下にスクロールする機能を持っているので、表示しきれない分は下にスクロールさせると見ることが出来ます。上部にナビゲーションバーを組み合わせて、階層構造を持つデータの表示に使われることが多いです。システム側が用意するセルはこれまで1行のテキストとイメージを表示する基機能をもつものだけでしたが、iPhone SDK 3.0になりセルの基タイプが4種類に拡張されました。UITableViewの動作制御は基的にそのコントローラーであるUITableViewControllerを通じて行います。

  • UITableViewの使い方その2:編集モード編

    UITableViewの使い方2:編集モード編 UITableViewの編集モードで行の挿入・削除・移動を行う方法の説明です。 English top page UITableViewの編集モード ナビゲーションバーなどに編集ボタンを用意すると、そのボタンを押すことでUITableViewを編集モードへ移行させることができます。 編集モードでは新しくセルを挿入したり、今あるセルを削除したり、セルの順番を入れ替えたりと様々な操作を行うことが出来ます。 ここではUITableViewの編集モードの動作設定に使われるメソッドを説明してゆきます。 UITableViewの使い方1と同様にUITableViewはInterface Builder側で作っていて、UITableViewのdataSourceやdelegateがUITableViewControllerに設定されているものとして話を進め

  • 初めてのCore Data on iPhone

    Core Dataの利用 iPhone SDK 3.0以降ではデータの保存にCore Dataを使う事が出来ます。Core Dataを使ってデータを保存する事で得られるメリットは様々なものがあるため、 これから大量のデータを扱うアプリケーションを作る場合にはCore Dataの使用をまず検討した方が良いでしょう。 このCore Dataを使うためにはいろいろと新しく覚えなければならない事がありますが、はっきり言ってサンプルを見ているだけで理解するのは至難の業です。 初めてCore Dataに触れる人には、サンプルコードを見ても何をやっているのか分かりにくいのです。これはCore Dataの利点でもあるコード記述量の削減が、 逆にコードの個々の繋がりを分かりにくくしてしまっていることが原因でしょう。 そんな状態でいきなりiPhone Developer Centerに掲載されているサンプルを

  • NSDataについて

    ファイルの中にあるデータからNSDataオブジェクトを作ります。下の例では自分のアプリケーションのドキュメントフォルダにある、 data.xmlというファイルの内容をmyDataという名前のNSDataオブジェクトに入れています。一応ファイルが存在しないときに実行しないようにエラー対策をしています。 NSData *myData; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.xml"

  • 1