Swift Decoding Плист Словарь словарей - PullRequest
0 голосов
/ 05 июля 2019

Я бы хотел использовать декодер списка свойств для декодирования двоичного списка словарей

Dictionary

Объект, который составляет словарь:

struct ZipCode: Codable {

    var zipCode: String
    var city: String
    let state: String
    let latitude: String
    let longitude: String
    let timezone: String
    let daylightSavingsFlag: String
    let geopoint: String

    enum CodingKeys: String, CodingKey {
        case zipCode = "Zip"
        case city = "City"
        case state = "State"
        case latitude = "Latitude"
        case longitude = "Longitude"
        case timezone = "Timezone"
        case daylightSavingsFlag = "Daylight savings time flag"
        case geopoint = "geopoint"
    }   
}

Объект оболочки:

struct ZipCodeList: Codable {

    var zipCodes: [String:ZipCode]

}

Я пытаюсь прочитать его, в результате чего получается nil zipCodelist:

do {
           let path        = Bundle.main.path(forResource: "ZipCodes", ofType: "plist")
           let binary         = FileManager.default.contents(atPath: path!)
           let zipCodes = try? PropertyListDecoder().decode(ZipCodeList.self, from: binary!)
           print("Hi")
    } catch {

}

1 Ответ

1 голос
/ 06 июля 2019

Ваш plist не имеет элемента zipCodes в качестве корневого элемента, вместо этого декодируется как

let zipCodes = try? PropertyListDecoder().decode([String: ZipCode].self, from: binary!)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...