我对Swift比较陌生,在解析GraphQL API调用的结果时遇到了困难。
我看到"failure(("声明中的结果属于NSError类型,如果它是"failure",我基本上会尝试访问它,然后访问NSError键。结果是:
failure(Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSUnderlyingError=0x282232700 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x280e54b40 [0x1faa4fcf0]>{length = 16, capacity = 16, bytes = 0x1002005036d7fb9f0000000000000000}, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://staging.mysite.com/api/, NSErrorFailingURLKey=http://staging.mysite.com/api/v2/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-4, NSLocalizedDescription=The network connection was lost.})
我通过使用获得以下信息:
print("(result)")
结果是一个类型为Result<GraphQLResult<Data>, Error>
的对象。有一些方法可以获取错误,但这个结果显然不是作为GraphQL错误抛出的。我使用的错误捕获是:
if let firstError = try? result.get().errors?.first {
completion([], [], firstError)
return
}
它通过了这个检查,所以它只是将它解释为一个正常的数据结果。我的问题是如何解析这些信息?
我的想法是,我需要检查它是否是一个失败,然后从"失败"类型中打开它,然后可以将附带的信息视为NSError对象。我不能使用'contains',因为它不是字符串。result
上有一个get()
方法,它允许您使用result.get().data
或result.get().error
,但在这种情况下都不返回任何内容。
如果能为我解析这些信息提供任何帮助,我们将不胜感激。谢谢
Result是一个通用的swift枚举,它有两种状态:成功或失败。
要从故障中得到错误,必须使用switch语句,例如:
switch result {
case .failure(let error):
//Handle error here
default:
break
}
有关Result枚举的详细信息,请点击此处:https://developer.apple.com/documentation/swift/result.