Тип аргумента «Spot.Restriction.Type» не соответствует ожидаемому типу «_FormatSpecifiable» - PullRequest
0 голосов
/ 20 марта 2020

Я пытался найти ответ в течение нескольких часов и не нашел ответа, достаточно близкого к моей ситуации, чтобы можно было перевести его. Я пытаюсь создать программу для извлечения массива из файла. json и чтения его, чтобы я мог отфильтровать ответы. Спасибо за любую информацию или помощь, которую вы можете мне дать.

import SwiftUI
import Foundation

struct Spot{

    enum Restriction: String {
        case breakfast, lunch, dinner
    }
    let restrictions: Set<Restriction>
}

extension Spot {
    init?(json: [String: Any]) {
        guard let restrictionsJSON = json["menu"] as? [String]
        else {
            return nil
        }

        var restrictions: Set<Restriction> = []
        for string in restrictionsJSON {
            guard let restriction = Restriction(rawValue: string) else {
                return nil
            }

            restrictions.insert(restriction)
        }

        self.restrictions = restrictions
    }
}

struct Filters: View {

    let filtersort = Spot.Restriction.self
    @State var showGreeting = false

    var body: some View {
        Form {
            Toggle(isOn: $showGreeting){
                Text("Show Welcome Message")
            }.padding()

            if showGreeting {
                Text("\(filtersort)")

            }
        }
    }
}

`

Вот мой обновленный код с тем же сообщением об ошибке, что и раньше.

    import SwiftUI
import Foundation

struct Spot: Decodable{

    var restrictions: [String: String]

    enum Restriction: String, CodingKey {
        case timeofyear
    }
}

extension Spot {
    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: Restriction.self)
        _ = try values.decode(Double.self, forKey: .timeofyear)
    }
}

struct Filters: View {

    let filtersort = Spot.Restriction.timeofyear
    @State var showGreeting = false

    var body: some View {
        Form {
            Toggle(isOn: $showGreeting){
                Text("Show Welcome Message")
            }.padding()

            if showGreeting {
                Text("\(filtersort)") //Argument type 'Spot.Restriction' does not conform to expected type '_FormatSpecifiable'

            }
        }
    }
}

1 Ответ

1 голос
/ 20 марта 2020

Xcode 11.4 предоставляет исправления, которые вам нужны.

Text(filtersort.rawValue)
...