如果我的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?
答案 0 :(得分:0)
如果你只是获得ID,你可以创建一个不同的对象来解码它:
public struct IdList: Decodable {
var ids:[String]
}