Hatena::ブログ(Diary)

日々是笑心 このページをアンテナに追加 RSSフィード

2011-09-20

NSError コードの調べ方

| 20:15 | NSError コードの調べ方を含むブックマーク 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 が入ってる MacSpotlight 検索すると、見つけやすいとのこと。ふむふむ φ(.. )

Cocoa (NSCocoaErrorDomain) <Foundation/FoundationErrors.h>
<AppKit/AppKitErrors.h>
<CoreData/CoreDataErrors.h>
WebKitErrorDomain <WebKit/WebKitErrors.h>
NSURLErrorDomain <Foundation/NSURLError.h>
NSXMLParserErrorDomain <Foundation/NSXMLParser.h>
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)

トラックバック - http://d.hatena.ne.jp/watanata2000/20110920/1316517342