Получение ошибок при использовании Enum с JSON (Swift) - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь использовать Decodable с Enum, но у меня есть четыре ошибки в моем Enum состоянии: Необработанное значение для перечисления должно быть буквальным . Я новичок в обработке данных JSON, и я не уверен, как заставить это работать.

import UIKit

enum BusinessType : String, Decodable {
    case pizza = String 
    case seafood = String
    case greek = String
    case vegan = String
}

struct Address : Decodable {
    var street : String
    var city : String
    var state : String
    var businessType : BusinessType
}

struct Customer : Decodable {
    var firstName : String
    var lastName : String
    var address : Address
}

struct CustomersResponse : Decodable {
    var customers : [Customer]
}


let json = """

{
    "customers":[
        {
            "firstName" : "My",
            "lastName" : "Client",
            "address" : {
                "street" : "100 Business Address",
                "city" : "New York",
                "state" : "NY",
                "businessType" : "pizza"
            }
        }

    ]

}

""".data(using: .utf8)!

let customersResponse = try! 
JSONDecoder().decode(CustomersResponse.self, from: json)
print(customersResponse)

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Если вы указываете тип необработанного значения как String, вам не нужно записывать его необработанное значение, поскольку значением по умолчанию является имя регистра

enum BusinessType : String, Decodable {
    case pizza, seafood, greek, vegan
}
0 голосов
/ 14 марта 2019

В этом случае literal является действительным String, а не type. Попробуйте это ...

enum BusinessType : String, Decodable {
    case pizza = "pizza"
    case seafood = "seafood"
    case greek = "greek"
    case vegan = "vegan"
}
...