iOSアプリ開発でNSErrorの情報を出力する拡張NSLogを定義する方法
今回はNSLogを拡張して、NSErrorの情報を出力する識別子の定義方法を紹介する。
わざわざ新しい識別子を定義しなくても、NSErrorの情報をログに出力することは可能であるが、記述が少々長くなってしまう。
今回紹介する方法を用いれば、NSErrorの変数を直接引数に指定することができ、簡潔に記述することが出来る様になる。
<方法概要>
PCHファイル(<プロジェクト名-Prefix.pch>)に拡張したログを定義する。
(注意)
PCHファイルはXcode6から自動で生成されなくなった。
手動で作成する方法は「Xcode6でPCHファイルを追加する方法」を参照のこと。
<方法詳細>
PCHファイルに下記の定義を追加する。
#define ErrLog(error) NSLog(@"\n--- error detail ---\ndomain:%@\ncode:%ld\n%@\n", [error domain],(long)[error code],[[error userInfo] description])
解説:
「ErrLog」という識別子をNSLogを拡張して定義している。
先頭に「--- error detail ---」という文言を出力し、その後、「ドメイン」「コード」「ユーザ情報」を改行(\n)を挟みながら順に出力している。
<使用方法>
NSErrorの情報をログ出力する際は「ErrLog」を使用して行う。
サンプルコードを下記に示す。
//↓↓↓ 「ErrLog」の動作を確認するため「NSError」を手動で初期化している ↓↓↓ NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; [dic setObject:@"abcde" forKey:@"key1"]; [dic setObject:@"fghij" forKey:@"key2"]; NSError *error = [NSError errorWithDomain:@"ドメイン" code:-100 userInfo:dic]; //↑↑↑ 「ErrLog」の動作を確認するため「NSError」を手動で初期化している ↑↑↑ ErrLog(error); //←ポイント
<実行結果>
2014-12-08 19:04:17.721 ErrLogSample[13022:80656] --- error detail --- domain:ドメイン code:-100 { key1 = abcde; key2 = fghij; }
Enjoy Programing!!
<関連記事>
iOSアプリ開発でログにクラス名とメソッド名を出力する方法
iOSアプリ開発でログにログレベルを導入する方法
iOSアプリ開発でNSErrorの情報を出力する拡張NSLogを定義する方法(本記事)
<お勧め書籍>