Swift Codeable不工作

时间:2018-04-02 11:27:43

标签: swift4 codable swift4.1

我创建了一个模型,用Codable协议将我的Api响应映射到swift结构。但它总是返回零。 注意: - 如果我从模型中删除isSelected它可以完美运行。 但我需要这个键来管理用户的选择。 此外,如果我尝试这种方法与类,它总是返回自我是不可变的错误。 任何人都面对这个问题也请帮助我将此代码转换为swift类

struct CustomCodingKey:CodingKey {
        var stringValue: String
        var intValue: Int?

        init?(stringValue: String) {
            self.stringValue = stringValue
            self.intValue = nil
        }

        init?(intValue: Int) {
            self.stringValue = String(intValue)
            self.intValue = intValue
        }
    }

    struct Field: Codable {

        var type: String
        var label: String
        var name: String
        var isSelected = false

        init?(json: JSON) {
            do {
                let data = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
                let decoder = JSONDecoder.init()
                decoder.keyDecodingStrategy = .custom { keys -> CodingKey in
                    let key = keys.last!.stringValue.split(separator: "-").joined()
                    print(key)
                    return CustomCodingKey(stringValue: String(key))!
                }
                self = try decoder.decode(Field.self, from: data)
            } catch {
                return nil
            }
        }

        var json: JSON {
            do {
                let data = try JSONEncoder().encode(self)
                if let tempJson = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? JSON {
                    return tempJson
                }
                return JSON()
            } catch {
                return JSON()
            }

        }
    }

0 个答案:

没有答案