2017-02-28 88 views
0

如何以最佳方式從此錯誤結果中獲取消息值。我TRIE了很多,但從來沒有價值,所以請大家幫我如何從swift中獲取錯誤密鑰值

BUYClient.sharedClient.createCustomer(with: credentials) { (customer : BUYCustomer?,token: BUYCustomerToken?, error :Error?) -> Void in 
       if customer != nil{ 
        print(token ?? "kuch nahi aaya") 
        print(customer?.fullName ?? "kuch nahi aaya") 
       } 
       let customer = error.debugDescription 

       print("value===\(customer)") 
      } 

結果:

 value===Optional(Error Domain=BUYShopifyErrorDomain Code=422 "(null)" UserInfo={errors={ 
      customer =  { 
       email =   (
           { 
         code = taken; 
         message = "has already been taken"; 
         options =     { 
          "rescue_from_duplicate" = 1; 
          value = "[email protected]"; 
         }; 
        } 
       ); 
      }; 
     }}) 

回答

1

爲了進入你必須投你Error到經典NSError錯誤的用戶信息,之後,您可以像字典一樣訪問userInfo

let nserror = error as! NSError 
if let errors = nserror.userInfo["errors"] as? [String: NSObject], 
    let customer = errors["customer"] as? [String: NSObject], 
    let email = customer["email"] as? [[String: NSObject]] 
{ 
    let message = email[0]["message"] 
} 
+0

謝謝你回答我,但它不工作它給錯誤getter/setter不被初始化 –

+0

我在我的代碼中缺少'if'。如果錯誤仍然存​​在,請用您嘗試過的新代碼更新您的問題,以便我可以看到您如何使用它。並請發佈完整的編譯器/運行時錯誤及其發生的行。 – Kie

+0

條件綁定的初始值設定項必須有可選的類型,而不是'NSError',如果讓nserror = error爲NSError,那麼我在這一行出現這個錯誤, –