我试图创建使用RxAlamofire返回Observable 的函数:
func getResponse(credentialData: Credentials, ulr: String)->Observable<(HTTPURLResponse, Any)>{
let credentialData = "\(credentialData.username):\(credentialData.password)".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
let base64Credentials = credentialData.base64EncodedString()
let headers = ("Authorization", "Basic \(base64Credentials)")
let header = HTTPHeaders.init(dictionaryLiteral: headers)
return Observable.create{ observer in
requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
.subscribe(onNext: { response in
observer.onNext(response)
} ,
onError: { error in
observer.onError(error)
})
return Disposables.create()
}
}
}
但我得到警告:
[subscribe(onNext:onError:onCompleted:onDisposed :)的调用结果”未使用
如何解决?添加.disposed(by: disposeBag)
后功能不起作用。
您好,您必须将请求添加到DisposeBag
中:
return Observable.create { observer in
requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
.subscribe(onNext: { response in
observer.onNext(response)
}, onError: { error in
observer.onError(error)
}).disposed(by: disposeBag)
return Disposables.create()
}
应该可以。