SwiftUI - Как использовать Result в Swift - PullRequest
0 голосов
/ 03 ноября 2019

Если я использую этот код, все работает нормально.

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, не работаю (см. Скриншот, возлюбленный)

enter image description here

Как мне устранить ошибки?

1 Ответ

0 голосов
/ 03 ноября 2019

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()

    }
}

В любом случае, вы не должны делать такие вещи, как выборка данных вВид, эта работа должна быть выполнена в модели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...