【发布时间】:2022-11-18 04:58:04
【问题描述】:
我正在尝试使用 dataTask 从 API 函数返回一个值。编辑代码时,出现错误:“没有更多上下文,表达式类型不明确。”我在下面添加了代码和图片。有谁知道如何解决这一问题?我是斯威夫特的新手。
func getNonce() {
let headers = [
"accept": "application/json",
"content-type": "application/json"
]
let parameters = [
"id": 1,
"jsonrpc": "2.0",
"params": [addressETH, "pending"],
"method": "eth_getTransactionCount"
] as [String : Any]
let postData = try? JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://eth-goerli.g.alchemy.com/v2/myapikeygoeshere")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData! as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> String in
if (error != nil) {
print(error as Any)
} else {
let dataString = String(data: data!, encoding: .utf8)!
let start = dataString.index(dataString.startIndex, offsetBy: 36)
let end = dataString.index(dataString.endIndex, offsetBy: -2)
let range = start..<end
let user_Nonce = String(dataString[range])
return user_Nonce?
}
})
dataTask.resume() }
错误在这一行:
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> String in
我试图返回值,但弹出错误。请帮忙
【问题讨论】:
-
这里有很多问题,但是从你的图像错误开始......你使用的 URLSession 方法有一个
(Data?, URLResponse?, Error?) -> Void类型的完成处理程序,但你已经用(Data?, URLResponse?, Error?) -> String替换了它,这不会工作。此外,你有时只在你的实现中返回一个String,所以你需要在你的第一个if分支中添加一个return nil,并且需要闭包然后是一个(Data?, URLResponse?, Error?) -> String?,这仍然不会'不起作用,因为那不是该方法的签名所采用的。 -
这个问题也是模棱两可的。将细节直接添加到问题中,而不是作为照片,以便人们更容易回答。
标签: swift