swiftui - SwiftUI - 如何在 Swift 中使用结果
问题描述
如果我使用此代码,则工作正常。
import Foundation
enum NetworkError: Error {
case badURL }
func fetchUnreadCount(from urlString: String, completionHandler: @escaping (Result<Int, NetworkError>) -> Void) {
guard let url = URL(string: urlString) else {
completionHandler(.failure(.badURL))
return
}
// complicated networking code here
print("Fetching \(url.absoluteString)...")
completionHandler(.success(5)) }
fetchUnreadCount(from: "https://www.hackingwithswift.com") { result in
switch result {
case .success(let count):
print("\(count) unread messages.")
case .failure(let error):
print(error.localizedDescription)
} }
如果我在 SwiftUI 中使用相同的代码,则不起作用(请参阅屏幕截图亲爱的)
我该如何消除错误?
解决方案
body
必须返回一个视图,所以只需添加return EmptyView()
或您想要显示的任何视图fetchUnreadCount
struct ContentView: View {
var body: some View {
fetchUnreadCount(from: "https://www.hackingwithswift.com") { result in
switch result {
case .success(let count):
print("\(count) unread messages.")
case .failure(let error):
print(error.localizedDescription)
} }
return EmptyView()
}
}
无论如何,你不应该在视图中获取数据,这项工作应该在模型中完成
推荐阅读
- bash - 运行 cURL 命令并使用 shell 脚本将输出文件保存到 AWS S3
- amazon-web-services - 在 IAM 策略中限制 EC2 实例的类型
- slurm - 将 Snakemake 与 slurm 配置文件一起使用时“--cores”的行为
- sql - 如何生成具有行号的列?
- mysql - 如何在 MySQL 中合并 2 个相关表,即使外键为空?
- django - 如何将用户名添加到视图 Django Rest Framework 中的 filterset_fields 中,其中用户是模型的外键?
- laravel - Laravel6 - 多登录平台上的电子邮件验证定制
- android - 即使我杀死我的应用程序,BluetoothGattCallback 回调方法 onCharacteristicChanged 也会继续触发
- php - 如何在 Xero Webhook 中向 Xero API 提交发布请求
- android - Android模拟器在访问视频解决方案时关闭(exoplayer)