如何快速从错误中获取键值
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 文件中获取键值?