解析GraphQL失败()导致Swift



我对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().dataresult.get().error,但在这种情况下都不返回任何内容。

如果能为我解析这些信息提供任何帮助,我们将不胜感激。谢谢

Result是一个通用的swift枚举,它有两种状态:成功或失败。

要从故障中得到错误,必须使用switch语句,例如:

switch result {
case .failure(let error):
//Handle error here
default:
break
}

有关Result枚举的详细信息,请点击此处:https://developer.apple.com/documentation/swift/result.

最新更新