swift - 请求 URL 并在警报中解析结果
问题描述
我已将变量设为全局变量,但我无法弄清楚如何在收到响应后显示警报。不确定我是否必须创建功能。任何事情都会有所帮助。
代码:https ://hastebin.com/izurihadib.swift
struct ContentView: View {
@State private var showingAlert = false
var body: some View {
TabView {
var str1 = ""
var fullStr = ""
Button(action: {
self.showingAlert = true
AF.request("https://api-quiz.hype.space/shows/now").responseJSON { response in
switch response.result {
case .success(let value):
let json = JSON(value)
debugPrint(json)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: json["nextShowTime"].stringValue)
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "MMM d, yyyy h:mm a"
let nextGameName = json["upcoming"][0]["nextShowLabel"]["title"].stringValue
let tempStr1 = "Next Game: "
str1 = tempStr1 + nextGameName
let nextGamePrize = json["nextShowPrize"].stringValue
let tempStr2 = "Prize: "
let str2 = tempStr2 + nextGamePrize
let nextGameTime = dateFormatter.string(from: dt!)
let tempStr3 = "Date/Time: "
let str3 = tempStr3 + nextGameTime
fullStr = str2 + "\n" + str3
case .failure(let error):
print(error)
}
}
}) {
Text("Get Info")
}
.alert(isPresented: $showingAlert) {
Alert(title: Text(str1), message: Text(fullStr), dismissButton: .default(Text("OK")))
}
.tabItem {
Image(systemName: "phone.fill")
Text("First Tab")
}
Text("The content of the second view")
.tabItem {
Image(systemName: "tv.fill")
Text("Second Tab")
}
}
}
}
解决方案
以下是解决问题所需的更改。
struct ContentView: View {
@State private var showingAlert = false
@State private var str1 = ""
@State private var fullStr = ""
var body: some View {
TabView {
Button(action: {
self.showingAlert = true
AF.request("https://api-quiz.hype.space/shows/now").responseJSON { response in
switch response.result {
case .success(let value):
//...
case .failure(let error):
self.str1 = "Error"
self.fullStr = "\(error)"
self.showingAlert = true
}
}
}) {
Text("Get Info")
}
.alert(isPresented: $showingAlert) {
Alert(title: Text(str1), message: Text(fullStr), dismissButton: .default(Text("OK")))
}
//...
}
}
}
推荐阅读
- compilation - 如何使用 vscode 在 C++ 中编译程序?
- python-3.6 - 如何使用gstreamer输出rtsp流供多个客户端访问
- android - Firestore 数据库到 recyclerview 和搜索
- html - 如何删除网格上图像的额外空间
- python - Kivymd 无法将标签和文本字段保持在同一行
- mysql - 缺少数据库时如何迁移 wordpress 网站?
- android - Android 应用程序在 android 10 上崩溃
- swagger - swagger 编辑器 io 的默认格式是什么?
- powershell - 更改windows下哪些用户代码deploy执行脚本
- javascript - 砌体图像在 ajax 调用上未正确定位