У вас есть несколько доступных вариантов. Я думаю, что самым простым является сделать расширение для Image и определить новый инициализатор, который будет отвечать вашим потребностям:
extension Image {
public init?(data: Data?) {
guard let data = data,
let uiImage = UIImage(data: data) else {
return nil
}
self = Image(uiImage: uiImage)
}
}
Тогда вы можете просто использовать его следующим образом:
Image(data: userService.user.imageData)
так как это nullable
, оно должно содержаться в другом View
как минимум с одним другим View
.
Если вы хотите предоставить заполнитель вместо отсутствующего изображения, вы можете использовать расширение как this:
extension Image {
public init(data: Data?, placeholder: String) {
guard let data = data,
let uiImage = UIImage(data: data) else {
self = Image(placeholder)
return
}
self = Image(uiImage: uiImage)
}
}
Тогда вы можете просто использовать его следующим образом:
Image(data: userService.user.imageData, placeholder: "nameOfPlaceholder")
, поскольку это не nullable
, его не нужно содержать в другом View
с хотя бы еще один View
.