在REST

时间:2018-05-02 02:45:21

标签: ios json swift rest

如果我的REST API可以发回部分响应(如此处指定:https://developers.google.com/gmail/api/guides/performance),是否最好使我的Swift对象中的所有属性都可选?或者还有另一种模式来处理这个问题吗?

例如,我的用户对象:

public struct User: Decodable {
    var id: Int
    var firstName: String
    var lastName: String
    var phoneNumber: String?
    var verified: Bool
}

在DB中,只有电话号码是可选的,其余都是必需的。因此,我的swift对象中只有电话号码被标记为可选。但是,当涉及API响应时,并非所有对用户对象的请求都将包含所有必需的属性。例如,如果我需要知道哪些用户已经过验证(GET / users?verified = true& fields = id),那么我的响应只是用户ID的集合。

这是否意味着在Swift中,我需要将除id之外的所有属性标记为可选?

关于SO的相关问题:Should I use optional for properties of object models that will be parsed from JSON?

1 个答案:

答案 0 :(得分:0)

如果你只是获得ID,你可以创建一个不同的对象来解码它:

public struct IdList: Decodable {
  var ids:[String]
}