Если мой 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
}
В БД только номер телефона не обязателен, все остальные обязательны. Следовательно, только номер телефона в моем быстром объекте помечен как необязательный. Однако когда дело доходит до ответов API, не все запросы для пользовательских объектов будут содержать все необходимые свойства. Например, если мне нужно знать, какие пользователи проверены (GET / users? Verified = true & fields = id), мой ответ будет просто набором идентификаторов пользователей.
Означает ли это, что в Swift мне нужно пометить все свойства, кроме id, как необязательные?
Связанный вопрос по SO: Следует ли использовать optional для свойств объектных моделей, которые будут анализироваться из JSON?
Если вы получаете только идентификаторы, вы можете создать другой объект для его декодирования:
public struct IdList: Decodable {
var ids:[String]
}
В моем случае сервер предоставит всю информацию о пользователях, и это не будет проблемой, если все свойства не являются необязательными. Но если информация об использовании превышает размер, я предпочитаю создать новую структуру, например
UserForDisplay
, которая просто включает необходимые свойства.