9

Apple のドキュメントによると、Swift で PKPass を初期化するには、パス データとエラー ポインターの 2 つの要素が必要です。

init(data data: NSData,
error error: NSErrorPointer)

Apple のSwift のドキュメントエラー処理の段落によると、

Cocoa では、エラーを生成するメソッドは、最後のパラメーターとして NSError ポインター パラメーターを取り、エラーが発生した場合、その引数に NSError オブジェクトを設定します。Swift は、エラーを生成する Objective-C メソッドを、Swift のネイティブ エラー処理機能に従ってエラーをスローするメソッドに自動的に変換します。

ただし、注意事項があります。

デリゲート メソッドや NSError オブジェクト引数を持つ完了ハンドラーを取るメソッドなど、エラーを消費するメソッドは、Swift によってインポートされたときにスローされるメソッドにはなりません。

このメソッドは消費ではなく、必要に応じてポインターを使用してエラーを設定するように見えるため、Apple のエラー処理の説明に反しているようです。次のようなコードを期待していました。

  do {
      let modifiedPass : PKPass = try PKPass(data: data)
     } catch let errorCaught as NSError
     {
        print("Error: \(errorCaught.domain)")
    }

私は何をひどく誤解していますか、あるいはこの明らかな不一致の理由は何ですか?

4

0 に答える 0