小编off*_*ome的帖子

如何通过指定 CodingKey 的子集来对 Codable 类型进行编码?

我有一些类型,我根据CodingKeys需要为其数据成员提供自定义名称。我想根据不同调用站点的要求,CodingKeys在将数据发送到服务器之前仅对类型的子集进行编码。所需的编码因调用站点而异,因此无需考虑默认实现。

示例类型(用于演示目的):

struct Account: Codable
{
    let name: String;
    var balance: Float;

    mutating func set(balance: Float)
    {
        self.balance = balance; // verifications, etc.
    }
}

struct User: Codable
{
    enum CodingKeys: String, CodingKey
    {
        case
            id = "db_id",
            name = "db_name",
            account
            // many more keys
    }

    let id: Int;
    let name: String;
    var account: Account;
    // many more data members
}
Run Code Online (Sandbox Code Playgroud)

创建实例:

var user = User(
    id: 1, name: "john", account: Account(name: "checking", balance: 10_000)); …
Run Code Online (Sandbox Code Playgroud)

encoding swift

6
推荐指数
1
解决办法
637
查看次数

标签 统计

encoding ×1

swift ×1