NSError コードの調べ方
NSFileManager の -moveItemAtPath:toPath:error: でファイルを移動しようとしたら、こんなエラーが出た。大抵の場合、エラーメッセージから推測できるんだけど、これは不親切。(T^T)
The operation couldn’t be completed. (Cocoa error 512.)
仕方ないので、NSError コードの調べ方をググってみたら、こちらさんの記事が分かりやすかった。参考にさせていただきます :-)
基本は Error Handling Programming GuideのError Objects, Domains, and Codes セクションを見ましょーとのこと。
Mac OS X(やiOS)のエラーは、エラードメインに分けられていて、NSError.hに次の4つのエラードメインが定義されています。ふむふむ。φ(.. )
エラーは4つのドメインに分かれてて、
- NSMachErrorDomain
- NSPOSIXErrorDomain
- NSOSStatusErrorDomain
- NSCocoaErrorDomain
さらにフレームワーク毎に定義されたエラードメインがあって、各ドメインのエラー番号は次のヘッダファイルに定義されてるそうな。Xcode が入ってる Mac で Spotlight 検索すると、見つけやすいとのこと。ふむふむ φ(.. )
Cocoa (NSCocoaErrorDomain) | |
〃 | |
〃 | |
WebKitErrorDomain | |
NSURLErrorDomain | |
NSXMLParserErrorDomain | |
Carbon (NSOSStatusErrorDomain) | CarbonCore.framework/Headers/MacErrors.h |
POSIX (NSPOSIXErrorDomain) | /usr/include/sys/errno.h |
Mach (NSMachErrorDomain) | /usr/include/mach/kern_return.h |
調べ方の基本は分かった。さっそく試してみよ。:-)
今回のは NSFileManager のエラーだから、Foundation/FoundationErrors.h で良いはず。Spotlight で検索すると FoundationErrors.h が見つかった。
/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/FoundationErrors.h
Xcode で開いてみると、、、おーい ^^;)
enum {
....
NSFileWriteUnknownError = 512, // Write error (reason unknown)