Просто используйте:
guard let `self` = self else { observer(.error(NSError(domain: "", code: 0, userInfo: [:]))); return Disposables.create() }
Однако я должен сказать, что я вообще не фанат класса. Во-первых, RxSwift уже имеет оболочку для dataTask:
func response(request: URLRequest) -> Observable<(response: HTTPURLResponse, data: Data)>
, который можно вызвать по:
URLSession.shared.rx.response(request: myRequest)
Также есть data(request:)
, который проверит код состояния и выдаст ошибку, если его нет в 200-х.
Вы можете просто внедрить функцию вместо того, чтобы добавить сложность ее оборачивания в объект, который не имеет добавленной стоимости. Например:
struct MyViewModel {
init(serverResponse: @escaping (URLRequest) -> Observable<Data>)...
}
Который может быть вызван:
let myViewModel = MyViewModel(serverResponse: URLSession.shared.rx.data)
При тестировании вы можете просто передать закрытие, которое возвращает Observable<Data>.just(myTestData)
.