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; } |
エラー処理を上手に使えるようになりたいものです。