Я пытаюсь создать NetworkLayer, в котором запросы будут возвращать наблюдаемые объекты.
Моя идея состоит в том, чтобы абстрагировать модели с помощью протокола / интерфейса, чтобы приложение знало только о самих данных, что-то вроде этого :
public protocol User {
var id: String? { get }
var type: String? { get }
var firstName: String? { get }
var lastName: String? { get }
}
struct UserDTO: User, Codable {
var id: String?
var type: String?
var firstName: String?
var lastName: String?
var username: String?
var address: String?
...
}
Проблема возникла, когда я пытаюсь "привести" модель к интерфейсу.
class Repository{
...
func getUser(userId: String) -> Observable<User> {
return networkManager.getUser(userId: userId)
}
}
class NewtworkManager{
...
func getUser(userId: String) -> Observable<UserDTO> {
...
}
}
В связи с этим я получаю эту ошибку:
Cannot convert return expression of type Observable< UserDTO > to return type Observable< User >
У вас есть идеи, как решить эту проблему? Нужно ли отображать наблюдаемое перед его возвратом из класса Repository?