gpt4 book ai didi

swift - 我如何发送从 api 应答后收到的 orderId?Swift

转载 作者:行者123 更新时间:2023-11-30 10:43:29 25 4
gpt4 key购买 nike

我可以保存 orderId 并从磁盘检索并发送第二个请求来自基地的回答:

{"orderId" : 241,"fullName" : "Поесть"}

SearchResponse.swift

struct SearchResponse: Codable {

var orderId: Int
var fullName: String
var retailId: Int

private enum CodingKeys: String, CodingKey {
case orderId
case fullName
case retailId
}
}

搜索请求后,我尝试将 orderId 保存在磁盘中,如下所示,状态 == 200(service.swift):

if let value = result.value {
var code = 0;
do {
if let responseDictionary = try JSONSerialization.jsonObject(with: value.data, options: .allowFragments) as? [String:Any] {
code = responseDictionary["status"] as? Int ?? 0;
}

} catch {
if let e = try? JSONDecoder().decode(ErrorResponse.self, from: value.data) {
observer.onError(e);
}
}
if (value.response?.statusCode == 200) {
do{

let response = try JSONDecoder().decode(SearchResponse.self, from: value.data);
try Disk.save(response.retailId, to: .caches, as: FileName.retailName);
try Disk.save(response.orderId, to: .caches, as: FileName.orderId);


} catch {
if let e = try? JSONDecoder().decode(ErrorResponse.self, from: value.data) {
observer.onError(e);
}
}
observer.onNext(true)
} else {
if let e = try? JSONDecoder().decode(ErrorResponse.self, from: value.data) {
observer.onError(e);
}
}
}

viewmodel.swift

private var orderId: String {
let orderId = try? Disk.retrieve(FileName.orderId, from: .caches, as: SearchResponse.self).orderId
return String(orderId!) <-- there error "Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value"
}

最佳答案

这不是一个完整的答案,但我认为作为答案解释会更清楚。您不应该使用 try? ,而是捕获任何错误并打印它们,并进一步避免强制展开。

private var orderId: String? {
do {
let orderId = try Disk.retrieve(FileName.orderId, from: .caches, as: SearchResponse.self).orderId
return String(orderId)
} catch {
print(error)
}
return nil
}

现在,如果出现任何问题,您将在控制台上看到一条错误消息,或者如果没有发现任何东西来区分两个可能的问题,您将得到 nil。

当保存到磁盘时,您的错误处理仅涉及 json 解码错误,因此您还需要打印/处理 try Disk.save(... 生成的任何可能的错误

关于swift - 我如何发送从 api 应答后收到的 orderId?Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56311684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com