カスタムパターンマッチングを作成しようとしています。これにより、エラーを切り替えてエラーコードと照合できます。カスタムパターンマッチングが失敗しました。 'Enum case is not typeメンバではありません。'
enum ErrorCode: Int {
case notSoDumb
case dumbError
}
let myError = NSError(domain: "My domain", code: ErrorCode.dumbError.rawValue, userInfo: nil)
func ~=(pattern: ErrorCode, value: NSError) -> Bool {
return (ErrorCode(rawValue: value.code) == pattern)
}
switch myError {
case ErrorCode.notSoDumb:
print("Not a dumb error")
case ErrorCode.dumbError:
print("Super dumb error")
default:
print("No matches!")
}
私のswitch文の最初のケースはEnum case 'notSoDumb' is not a member of type 'NSError'
の誤差があります。以下の例を参照してください。私は整数でErrorCode
列挙型を置き換える(およびInt
sおよびNSError
のに合わせて、私のカスタム~=
オペレータを更新すると、すべてが正常に動作し
、あなたはこのエラーを取得します、NSErrorインスタンスであるmyErrorとIntを比較すると、このようなエラーにつながるはずです...あなたの主な目的は何ですか? –
これは既知のバグです:https://bugs.swift.org/browse/SR-1121最初に一時的な作業に割り当てる(たとえば、 'not notSoDumbErrorCode = ErrorCode.notSoDumb'と' case notSoDumbErrorCode: ')。 – Hamish
@ハミッシュここで問題点を教えてください。私は、上記のスイッチステートメントに基づいて、そのようなエラーを生成する必要がありますと仮定... –