ダブルクオーテーションや改行などの特殊文字を文字列に含める方法

ダブルクォーテーションや改行などのが入った文字列を使いたいときがあると思いますが、その時はバックスラッシュ「\」を使います。

ダブルクオーテーション「”」 \”
改行 \n
タブ \t
%%
Macの日本語キーボードではoptionキーを押しながら¥キーを押します。
USキーボードでは\キーがあるのでそれを使います。



NSErrorを使う時の注意点

何かを処理するメソッドで引数にNSErrorを渡すものがあります。

メソッド実行後にエラーになった場合にNSErrorにエラーメッセージが帰ってきて、エラーメッセージから解決方法を知ることができます。


▼下記のコードではドキュメントフォルダ内plistファイルを削除するもので、エラーのチェックを行なっています。



使うときに


と、初期値を入れずに使ってしまうと、NSErrorを参照した時に、参照先が適当な値になっているためにEXC_BAD_ACCESSが発生してしまいます。

NSError生成時にnilを指定して初期化することで回避できます。



現在選択されている言語を取得する方法

現在選択されている言語を取得できれば、
「表示言語によって処理を分岐する」などができるようになります。


まず言語のリストを取得します。



取得したリストの0番目に、現在選択されている言語の言語コード(日本語なら”ja”)が格納されるので、NSStringに格納します。



あとは「initWithLocaleIdentifier」を使ってNSLocaleを生成します。



NSDateクラスの基本

NSDateは、日付/時間を管理する為のクラスです。

・NSDateを生成する

+ (id)date

(例)
NSDate *date = [NSDate date];
現在時刻を取得してNSDateを生成
+(id)dateWithTimeIntervalSinceNow:(NSTimeInterval)seconds

(例:1時間後の時刻を取得して生成)
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:1*60*60];
現在時刻に指定した秒数のオフセットを加えてNSDateを生成

・インスタンスメソッド
-(NSString*)description 日付を文字列にして返す
-(NSDate*)earlierDate:(NSDate *)anotherDate 2つの日付を比較して過去の日付を返す
-(NSDate*)laterDate:(NSDate *)anotherDate 2つの日付を比較して新しいほうの日付を返す
-(BOOL)isEqualToDate:(NSDate*)anotherDate 2つの日付が同じかを判定する
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate 2つの日付の時間の差を取得する


NSTimerを使う

NSTimerは、
・一定時間経った後にメソッドを呼び出したい時
・一定間隔でメソッドを呼び出したい時
に使います。

・NSTimerを作成する。


・主なメソッド

-(void)fire
(例)
[aTimer fire];
タイマーを動かす
-(void)invalidate
(例)
[aTimer invalidate];
タイマーを停める
-(BOOL)isValid
(例)
BOOL isTimerVaild = [aTimer isValid];
タイマーが動いているかを判定する


ネットワークアクセス中であることをユーザーに明示する方法

network access Activity indicator
ステータスバーにネットワークアクセス中であることを示すインジケータを表示する方法を説明します。

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
でインジケータが有効になります。
(ネットへのアクセスが始まると、自動でインジケータが表示されます。)

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
でインジケータは無効になります。


アプリを複数の言語に対応させる方法

アプリを複数の言語に対応させる方法について説明します。
今回は日本語と英語に対応させてみます。

1、まずは言語の設定ファイルを作ります。

▼適当なグループ(ここではSupporting Filesを選択しています)を右クリックしNew Fileを選択します
xcode new file

▼メニューが出てくるのでiOSのResouseの中からStrings Fileを選択します
strings file

▼英語表記のときに表示する文字列を
“Edit”=”Edit”;のような形式で入力します。(セミコロンを忘れずに!)
en localize

▼FileinspectorのLocalizationという項目の下にあるプラスボタンを押します
localization

▼Englishが現れます。
localization en

▼もう一度プラスボタンを押し、Japaneseを選択します
japanese

▼Japaneseが表示され、
localize

▼.stringsファイルが分割されます。
localizable.strings

▼.stringsファイルの(Japanese)の方は
“Edit”=”編集”;という形式で書きます。
localization ja

2、多言語化する部分にコードを追加する
▼下記の画像のように多言語化する文字列は
NSLocalizedString(@”Settings”, @”")
という形式で書きます。


3、確認してみる
「設定app→一般→言語環境」で表示言語を変更できます。
▼日本語の場合


▼Englishにした場合


ローカライズできました!


オブジェクトをプロパティリストに出力する方法と、プロパティリストから読みこむ方法

アプリで生成したデータを永続的に(アプリを終了しても消えないように)保存する方法のひとつに、「プロパティリストへ保存する」という方法があります。
NSArray、NSDictionary、などのオブジェクトからプロパティリストへ出力する方法と、プロパティリストから読み込んだデータをオブジェクトに戻す方法について書きます。

1,オブジェクトからプロパティリストへ出力する方法



2,プロパティリストから読み込んだデータをオブジェクトに戻す方法


自作の画像を使ってボタンを作る方法

一旦画像ファイルからUIImageに変換し、ボタン作成時にUIImageを指定して作成します。



「setBackgroundImage: forState:」メソッドのforStateには
1,UIControlStateNormal(ボタンが有効な時)
2,UIControlStateHighlighted(ボタンがハイライトの時)
3,UIControlStateDisabled(ボタンが無効な時)
と、3種類の状態が指定できるので、それぞれの状態に対して異なる画像を指定できます。


NSArrayクラスの基本

NSArrayクラスは、オブジェクトの集合を格納するクラスであり、順番のあるデータを格納するのに向いています。
格納したオブジェクトには0から番号が割り当てられて管理されます。(取り出す時にその番号を指定して取り出します)

NSArrayの中には、NSArray、NSDictionary、NSString等のオブジェクトを格納でき、データの構造を階層構造にすることもできます。

NSArrayは後から変更することはできません。順番入れ替えや、要素の追加など、後からの変更を可能にしたい場合は、NSMutableArrayクラスを使用します。

・NSArrayを作成する。

(例1) NSArray *arr = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
(例2) NSArray *arr = [[NSArray alloc] initWithObjects:@”one”, @”two”, @”three”, nil];

・主なメソッド

-(id)objectAtIndex:(NSUInteger)index
(例)
[arr objectAtIndex:2];
指定した位置の要素を返す
-(NSUInteger)count
(例)
int arrNum = [arr count];
要素数を返す
-(id)lastObject
(例)
id lastObj = [arr lastObject];
一番最後の要素を返す