イナヅマTVログ

Objective-C事始め – NSErrorの3つのプロパティ

| 0件のコメント

2013-07書きかけ記事の再編集投稿です。

Objective-Cリハビリ中メモ。
環境: Xcode 4.6.3, iOS 6.

NSError

エラー処理に使うNSErrorのお勉強。
Apple: Error Handling Programming Guide
Apple: NSError Class Reference

NSErrorには3つのプロパティがある。
– code
– localizedDescription
– localizedSuggestion

NSErrorにエラーメッセージを設定する

NSString *errorDomain = @"com.inazumatv.APP_NAME";
NSInteger errorCode = 12345;
NSDictionary *errorUserInfo = @{NSLocalizedDescriptionKey: @"Error Description",
                    NSLocalizedRecoverySuggestionErrorKey: @"Error Suggestion"};
[[NSError alloc] initWithDomain:errorDomain code:errorCode userInfo:errorUserInfo];

domain
バンドルIDのような逆順DNSを設定しておけば良いらしい。

code
Erro codeを設定する。
NSInteger型数値を設定する。
プロジェクトでErrorコードが設定されてる場合はここに設定すると良さげ。

userInfo
userInfo は NSDictionary。
2つのキーを設定する。
・NSLocalizedDescriptionKey
・NSLocalizedRecoverySuggestionErrorKey

NSLocalizedRecoverySuggestionErrorKey は必須では無いので不要なら省略可能。

NSErrorを使う

NSErrorインスタンスにnilを設定。
処理関数に参照渡し。
処理関数内でエラーがあれば参照エラーへNSErrorを設定する。

NSError *error = nil;
NSString *result = [ExampleError exampleMethod:&error]
 
if (error) {
    // error処理
}

処理側関数。
コードは雰囲気なので意味はありません。

// class ExampleError
+(NSString *)exampleMethod:(NSError **)didFailWithError
{
    NSError *error = nil;
    NSString *resultMessage = @"success message";
 
    [self innerMethod:&error];
    if (error) {
        *didFailWithError = error;
        return nil;
    }
 
    return resultMessage;
}

エラー処理を上手に使えるようになりたいものです。

コメントを残す