如何快速从错误中获取键值

Posted

技术标签:

【中文标题】如何快速从错误中获取键值【英文标题】:How can i fetch key value from Error in swift 【发布时间】:2017-02-28 10:20:55 【问题描述】:

如何以最佳方式从该错误结果中获取消息值。我尝试了很多,但没有得到价值,所以请帮助我

 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 = "y@gmail.com";
                        ;
                    
                );
            ;
        )

【问题讨论】:

【参考方案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"]

【讨论】:

感谢您回答我,但它不工作它给出错误 getter/setter not initialized 我的代码中缺少if。如果错误仍然存​​在,请使用您尝试过的新代码更新您的问题,以便我可以看到您如何尝试使用它。并且请发布完整的编译器/运行时错误及其发生的行。 条件绑定的初始化器必须有 Optional 类型,而不是 'NSError' 如果 let nserror = error as NSError ,我在这一行得到了这个错误, 这就是我的意思,可能缺少一些?!。我编辑了我的答案。 输入“任何?”没有下标成员现在我在这一行遇到了这个错误 let message = nserror.userInfo["errors"]["customer"]["email"][0]["message"] 感谢考虑我

以上是关于如何快速从错误中获取键值的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个模式中获取特定的键值,通过比较它们是不是具有相同的键值?

如何从 AppSettings.Config 文件中获取键值?

如何从飞镖颤动中的键或键值对获取索引

如何从数据中获取键值

如何从 Objective C 中的 NSDictionary 获取键值?

如何从 Yesod 的 Persistent 中获取原始键值?