Исходя из представленных вами типов, я предполагаю, что вы ищете код, подобный приведенному ниже. Этот код имеет много случайных сложностей из-за чрезмерного использования Optionals (?
) в типах.
У Strings или Arrays практически нет причин быть необязательными. Логически, пустая строка ничем не отличается от нулевой строки (а пустой массив ничем не отличается от нулевого массива) в 99,99% случаев. В связи с этим необходимо привести веские аргументы, чтобы сделать их необязательными.
func example(_ from: Observable<Response?>) -> Observable<[ViewModel]?> {
return from
.map { $0?.shoppingList ?? [] }
.map { $0.map{ $0.map(ViewModel.init) } }
}
extension ViewModel {
init(_ shoppingList: ShoppingList) {
name = shoppingList.name
offers = shoppingList.offers?.map { ViewModelOffers(fullPrice: $0.fullPrice) }
}
}