|
@@ -16,34 +16,65 @@ import RxCocoa
|
|
|
import Result
|
|
|
|
|
|
public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
-
|
|
|
- private let disposeBag = DisposeBag()
|
|
|
|
|
|
+ /// 释放内存
|
|
|
+ private let disposeBag = DisposeBag()
|
|
|
+ /// 单例
|
|
|
static let shared : SwiftMoyaNetWorkManager = SwiftMoyaNetWorkManager()
|
|
|
-
|
|
|
- /// 成功回调 对象
|
|
|
- typealias successCallback = (_ data: Any) -> Void
|
|
|
- /// 成功回调带泛型 数组
|
|
|
- typealias successCallArrayback = (_ data: [Any]) -> Void
|
|
|
-
|
|
|
+ /// 成功回调带泛型 RootModel
|
|
|
+ typealias successCallRootModelBack = (_ T: RootModel) -> Void
|
|
|
+ /// 成功回调带泛型 任意值
|
|
|
+ typealias successCallAnyBack = (_ data: Any) -> Void
|
|
|
+ /// 成功回调带泛型 任意数组
|
|
|
+ typealias successCallAnyArrayback = (_ data: [Any]) -> Void
|
|
|
/// 成功回调带泛型 对象
|
|
|
- typealias successCallTBack = (_ T: BaseMappable) -> Void
|
|
|
- /// 成功回调带泛型 数组
|
|
|
- typealias successCallArrayTback = (_ T: [BaseMappable]) -> Void
|
|
|
-
|
|
|
+ typealias successCallObjectBack = (_ T: BaseMappable) -> Void
|
|
|
+ /// 成功回调带泛型 对象数组
|
|
|
+ typealias successCallArrayObjectback = (_ T: [BaseMappable]) -> Void
|
|
|
+ /// 失败回调
|
|
|
typealias falseCallback = () -> Void
|
|
|
var falseCallback : falseCallback?
|
|
|
+}
|
|
|
|
|
|
+extension SwiftMoyaNetWorkManager {
|
|
|
+ // MARK: 取消所有请求
|
|
|
+ /// 取消所有请求
|
|
|
+ func cancelAllRequest() {
|
|
|
+ provider.manager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
|
|
|
+ dataTasks.forEach { $0.cancel() }
|
|
|
+ uploadTasks.forEach { $0.cancel() }
|
|
|
+ downloadTasks.forEach { $0.cancel() }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // MARK: 取消指定请求
|
|
|
+ /// 取消指定请求
|
|
|
+ ///
|
|
|
+ /// - Parameter url: 指定的网络请求地址
|
|
|
+ func cancelDesignationRequest(url:String) {
|
|
|
+ provider.manager.session.getTasksWithCompletionHandler {
|
|
|
+ (sessionDataTask, uploadData, downloadData) in
|
|
|
+ sessionDataTask.forEach {
|
|
|
+ //只取消指定url的请求
|
|
|
+ if ($0.originalRequest?.url?.absoluteString == url) {
|
|
|
+ $0.cancel()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+extension SwiftMoyaNetWorkManager {
|
|
|
+
|
|
|
// MARK: 泛型网络请求返回对象
|
|
|
/// 泛型网络请求返回对象
|
|
|
/// 网络请求
|
|
|
///
|
|
|
/// - Parameters:
|
|
|
- /// - type: 模型
|
|
|
/// - target: 请求地址加参数
|
|
|
- /// - isCache: 是否缓存
|
|
|
/// - completion: 回调
|
|
|
- func request<T: BaseMappable>(_ type: T.Type ,target: MultiTarget,isCustomAlert:Bool = false,completion: @escaping successCallTBack) -> Void {
|
|
|
+ func requestRootModel(target: MultiTarget,completion: @escaping successCallRootModelBack) -> Void {
|
|
|
//判断是否链接网络
|
|
|
if !isNetworkConnect{
|
|
|
if let falseCallback = self.falseCallback {
|
|
@@ -52,14 +83,14 @@ public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
provider.rx
|
|
|
.request(target)
|
|
|
- .map(T.self)
|
|
|
+ .mapRootModel()
|
|
|
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
|
|
|
.observeOn(MainScheduler.instance)
|
|
|
.subscribe(onSuccess: { [weak self] element in
|
|
|
-
|
|
|
+
|
|
|
guard let element = element else {
|
|
|
if let falseCallback = self?.falseCallback {
|
|
|
falseCallback()
|
|
@@ -76,15 +107,16 @@ public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
}
|
|
|
.disposed(by: disposeBag)
|
|
|
}
|
|
|
- // MARK: 泛型网络请求返回数组对象
|
|
|
- /// 泛型网络请求返回数组对象
|
|
|
+
|
|
|
+
|
|
|
+ // MARK: 泛型网络请求返回任意值
|
|
|
+ /// 泛型网络请求返回任意值
|
|
|
+ /// 网络请求
|
|
|
///
|
|
|
/// - Parameters:
|
|
|
- /// - type: 模型
|
|
|
/// - target: 请求地址加参数
|
|
|
- /// - isCache: 是否缓存
|
|
|
/// - completion: 回调
|
|
|
- func requestArray<T: BaseMappable>(_ type: T.Type ,target: MultiTarget,isCustomAlert:Bool = false,completion: @escaping successCallArrayTback) -> Void {
|
|
|
+ func requestAny(target: MultiTarget,completion: @escaping successCallAnyBack) -> Void {
|
|
|
//判断是否链接网络
|
|
|
if !isNetworkConnect{
|
|
|
if let falseCallback = self.falseCallback {
|
|
@@ -92,14 +124,15 @@ public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
provider.rx
|
|
|
.request(target)
|
|
|
- .mapArray(T.self)
|
|
|
+ .mapAnyValue()
|
|
|
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
|
|
|
.observeOn(MainScheduler.instance)
|
|
|
.subscribe(onSuccess: { [weak self] element in
|
|
|
-
|
|
|
+
|
|
|
guard let element = element else {
|
|
|
if let falseCallback = self?.falseCallback {
|
|
|
falseCallback()
|
|
@@ -116,14 +149,15 @@ public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
}
|
|
|
.disposed(by: disposeBag)
|
|
|
}
|
|
|
-
|
|
|
- // MARK: 网络请求返回RootModel
|
|
|
- /// 网络请求返回RootModel
|
|
|
+
|
|
|
+ // MARK: 泛型网络请求返回任意值数组
|
|
|
+ /// 泛型网络请求返回返回任意值数组
|
|
|
+ /// 网络请求
|
|
|
///
|
|
|
/// - Parameters:
|
|
|
/// - target: 请求地址加参数
|
|
|
- /// - completion: 请求成功回调
|
|
|
- func request(target: MultiTarget,isCustomAlert:Bool = false,completion: @escaping successCallback) -> Void {
|
|
|
+ /// - completion: 回调
|
|
|
+ func requestAnyArray(target: MultiTarget,completion: @escaping successCallAnyArrayback) -> Void {
|
|
|
//判断是否链接网络
|
|
|
if !isNetworkConnect{
|
|
|
if let falseCallback = self.falseCallback {
|
|
@@ -131,30 +165,41 @@ public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
provider.rx
|
|
|
.request(target)
|
|
|
+ .mapAnyArray()
|
|
|
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
|
|
|
.observeOn(MainScheduler.instance)
|
|
|
- .subscribe(onSuccess: { [weak self] response in
|
|
|
- self?.getResponseStatusCode(response: response, completion: completion)
|
|
|
+ .subscribe(onSuccess: { [weak self] element in
|
|
|
+
|
|
|
+ guard let element = element else {
|
|
|
+ if let falseCallback = self?.falseCallback {
|
|
|
+ falseCallback()
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ completion(element)
|
|
|
}) {
|
|
|
[weak self] (error) in
|
|
|
- SwiftProgressHUD.shared().showText(error.localizedDescription)
|
|
|
if let falseCallback = self?.falseCallback {
|
|
|
falseCallback()
|
|
|
}
|
|
|
+ SwiftProgressHUD.shared().showError("网络链接失败,请检查网络")
|
|
|
}
|
|
|
.disposed(by: disposeBag)
|
|
|
}
|
|
|
-
|
|
|
- // MARK: 网络请求返回Value
|
|
|
- /// 网络请求返回Value
|
|
|
+
|
|
|
+ // MARK: 泛型网络请求返回对象
|
|
|
+ /// 泛型网络请求返回对象
|
|
|
+ /// 网络请求
|
|
|
///
|
|
|
/// - Parameters:
|
|
|
+ /// - type: 模型
|
|
|
/// - target: 请求地址加参数
|
|
|
- /// - completion: 请求成功回调
|
|
|
- func requestValue(target: MultiTarget,completion: @escaping successCallback) -> Void {
|
|
|
+ /// - completion: 回调
|
|
|
+ func requestObject<T: BaseMappable>(_ type: T.Type ,target: MultiTarget,completion: @escaping successCallObjectBack) -> Void {
|
|
|
//判断是否链接网络
|
|
|
if !isNetworkConnect{
|
|
|
if let falseCallback = self.falseCallback {
|
|
@@ -162,30 +207,39 @@ public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
provider.rx
|
|
|
.request(target)
|
|
|
+ .mapObject(T.self)
|
|
|
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
|
|
|
.observeOn(MainScheduler.instance)
|
|
|
- .subscribe(onSuccess: { [weak self] response in
|
|
|
- self?.getResponseValueStatusCode(response: response, completion: completion)
|
|
|
+ .subscribe(onSuccess: { [weak self] element in
|
|
|
+
|
|
|
+ guard let element = element else {
|
|
|
+ if let falseCallback = self?.falseCallback {
|
|
|
+ falseCallback()
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ completion(element)
|
|
|
}) {
|
|
|
[weak self] (error) in
|
|
|
- SwiftProgressHUD.shared().showText(error.localizedDescription)
|
|
|
if let falseCallback = self?.falseCallback {
|
|
|
falseCallback()
|
|
|
}
|
|
|
+ SwiftProgressHUD.shared().showError("网络链接失败,请检查网络")
|
|
|
}
|
|
|
.disposed(by: disposeBag)
|
|
|
}
|
|
|
-
|
|
|
- // MARK: 网络请求返回数组
|
|
|
- /// 网络请求返回数组
|
|
|
+ // MARK: 泛型网络请求返回数组对象
|
|
|
+ /// 泛型网络请求返回数组对象
|
|
|
///
|
|
|
/// - Parameters:
|
|
|
+ /// - type: 模型
|
|
|
/// - target: 请求地址加参数
|
|
|
- /// - completion: 请求成功回调
|
|
|
- func requestArray(target: MultiTarget,completion: @escaping successCallArrayback) -> Void {
|
|
|
+ /// - completion: 回调
|
|
|
+ func requestArrayObject<T: BaseMappable>(_ type: T.Type ,target: MultiTarget,completion: @escaping successCallArrayObjectback) -> Void {
|
|
|
//判断是否链接网络
|
|
|
if !isNetworkConnect{
|
|
|
if let falseCallback = self.falseCallback {
|
|
@@ -193,212 +247,166 @@ public class SwiftMoyaNetWorkManager: NSObject {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
provider.rx
|
|
|
.request(target)
|
|
|
+ .mapArrayObject(T.self)
|
|
|
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
|
|
|
.observeOn(MainScheduler.instance)
|
|
|
- .subscribe(onSuccess: { [weak self] response in
|
|
|
-
|
|
|
- self?.getResponseArrayStatusCode(response: response, completion: completion)
|
|
|
+ .subscribe(onSuccess: { [weak self] element in
|
|
|
+
|
|
|
+ guard let element = element else {
|
|
|
+ if let falseCallback = self?.falseCallback {
|
|
|
+ falseCallback()
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ completion(element)
|
|
|
}) {
|
|
|
[weak self] (error) in
|
|
|
- SwiftProgressHUD.shared().showText(error.localizedDescription)
|
|
|
if let falseCallback = self?.falseCallback {
|
|
|
falseCallback()
|
|
|
}
|
|
|
+ SwiftProgressHUD.shared().showError("网络链接失败,请检查网络")
|
|
|
}
|
|
|
.disposed(by: disposeBag)
|
|
|
}
|
|
|
-
|
|
|
- // MARK: 取消所有请求
|
|
|
- /// 取消所有请求
|
|
|
- func cancelAllRequest() {
|
|
|
- provider.manager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
|
|
|
- dataTasks.forEach { $0.cancel() }
|
|
|
- uploadTasks.forEach { $0.cancel() }
|
|
|
- downloadTasks.forEach { $0.cancel() }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // MARK: 取消指定请求
|
|
|
- /// 取消指定请求
|
|
|
- ///
|
|
|
- /// - Parameter url: 指定的网络请求地址
|
|
|
- func cancelDesignationRequest(url:String) {
|
|
|
- provider.manager.session.getTasksWithCompletionHandler {
|
|
|
- (sessionDataTask, uploadData, downloadData) in
|
|
|
- sessionDataTask.forEach {
|
|
|
- //只取消指定url的请求
|
|
|
- if ($0.originalRequest?.url?.absoluteString == url) {
|
|
|
- $0.cancel()
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
-// MARK: - StatusCode
|
|
|
-extension SwiftMoyaNetWorkManager {
|
|
|
- // MARK: 返回RootModel
|
|
|
- /// 获取状态码返回RootModel
|
|
|
- ///
|
|
|
- /// - Parameters:
|
|
|
- /// - response: 响应结果
|
|
|
- /// - completion: 回调
|
|
|
- private func getResponseStatusCode(response:Response, completion: @escaping successCallback) -> Void {
|
|
|
- let json = try? JSON(response.mapJSON())
|
|
|
- if response.statusCode == 200 {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json!.description)")
|
|
|
-
|
|
|
- let json = JSON(parseJSON: json!.description)
|
|
|
- let rootModel = RootModel(JSONString: json.description)
|
|
|
- let data = JSON(json["data"]).description
|
|
|
- rootModel?.data = data
|
|
|
- if rootModel!.code == 0 {
|
|
|
- completion(rootModel as Any)
|
|
|
- }else if rootModel!.code == 1 {
|
|
|
- SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!", textAlignment: .left)
|
|
|
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
+// MARK: - 泛型
|
|
|
+extension PrimitiveSequence where TraitType == SingleTrait, ElementType == Response {
|
|
|
+
|
|
|
+ // MARK: 泛型返回RootModel
|
|
|
+ func mapRootModel() -> Single<RootModel?> {
|
|
|
+ return flatMap { response -> Single<RootModel?> in
|
|
|
+ do {
|
|
|
+ let json = try JSON(response.mapJSON())
|
|
|
+ if response.statusCode == 200 {
|
|
|
+ NXLLog("\nurl=\(String(describing: response.request!.url!))\nstatusCode=\(response.statusCode)\njson=\n\(json.description)");
|
|
|
+
|
|
|
+ let json = JSON(parseJSON: json.description)
|
|
|
+ let rootModel = RootModel(JSONString: json.description)
|
|
|
+ let data = JSON(json["data"]).description
|
|
|
+ rootModel?.data = data
|
|
|
+ return Single<RootModel?>.just(rootModel)
|
|
|
+ }else if response.statusCode == 401 {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json.description)")
|
|
|
+ let infoModel = InfoModel(JSONString: json.description)
|
|
|
+ SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
|
|
|
+ kAppDelegate.setLoginController()
|
|
|
+ return Single<RootModel?>.just(nil)
|
|
|
+ }else {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
|
|
|
+ SwiftProgressHUD.shared().showText(response.description)
|
|
|
+
|
|
|
+ return Single<RootModel?>.just(nil)
|
|
|
}
|
|
|
|
|
|
- }else {
|
|
|
- SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!")
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
- }
|
|
|
- }
|
|
|
- }else if response.statusCode == 401 {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json!.description)")
|
|
|
- let infoModel = InfoModel(JSONString: json?.description ?? "")
|
|
|
- kAppDelegate.setLoginController()
|
|
|
- SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
|
|
|
-
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
- }
|
|
|
- } else {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
|
|
|
-
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
+ } catch {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)")
|
|
|
+ SwiftProgressHUD.shared().showText(response.description)
|
|
|
+ return Single<RootModel?>.just(nil)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // MARK: 返回Vaule
|
|
|
- /// 获取状态码返回Vaule
|
|
|
- ///
|
|
|
- /// - Parameters:
|
|
|
- /// - response: 响应结果
|
|
|
- /// - completion: 回调
|
|
|
- private func getResponseValueStatusCode(response:Response, completion: @escaping successCallback) -> Void {
|
|
|
- let json = try? JSON(response.mapJSON())
|
|
|
- if response.statusCode == 200 {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json!.description)")
|
|
|
- let json = JSON(parseJSON: json!.description)
|
|
|
- let rootModel = RootModel(JSONString: json.description)
|
|
|
- let data = JSON(json["data"]).description
|
|
|
- rootModel?.data = data
|
|
|
- if rootModel!.code == 0 {
|
|
|
- completion(rootModel?.data as Any)
|
|
|
- }else if rootModel!.code == 1 {
|
|
|
- SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!", textAlignment: .left)
|
|
|
-
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
+ // MARK: 泛型返回任意类型
|
|
|
+ func mapAnyValue() -> Single<Any?> {
|
|
|
+ return flatMap { response -> Single<Any?> in
|
|
|
+ do {
|
|
|
+ let json = try JSON(response.mapJSON())
|
|
|
+ if response.statusCode == 200 {
|
|
|
+ NXLLog("\nurl=\(String(describing: response.request!.url!))\nstatusCode=\(response.statusCode)\njson=\n\(json.description)");
|
|
|
+
|
|
|
+ let json = JSON(parseJSON: json.description)
|
|
|
+ let rootModel = RootModel(JSONString: json.description)
|
|
|
+ let data = JSON(json["data"]).description
|
|
|
+ rootModel?.data = data
|
|
|
+ if rootModel!.code == 0 {
|
|
|
+ return Single<Any?>.just(rootModel?.data as Any)
|
|
|
+ }else if rootModel!.code == 1 {
|
|
|
+ SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!")
|
|
|
+ return Single<Any?>.just(nil)
|
|
|
+ }else {
|
|
|
+ SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!")
|
|
|
+ return Single<Any?>.just(nil)
|
|
|
+ }
|
|
|
+ }else if response.statusCode == 401 {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json.description)")
|
|
|
+ let infoModel = InfoModel(JSONString: json.description)
|
|
|
+ SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
|
|
|
+ kAppDelegate.setLoginController()
|
|
|
+ return Single<Any?>.just(nil)
|
|
|
+ }else {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
|
|
|
+ SwiftProgressHUD.shared().showText(response.description)
|
|
|
+
|
|
|
+ return Single<Any?>.just(nil)
|
|
|
}
|
|
|
|
|
|
- }else {
|
|
|
- SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!")
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
- }
|
|
|
- }
|
|
|
- }else if response.statusCode == 401 {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json!.description)")
|
|
|
- let infoModel = InfoModel(JSONString: json?.description ?? "")
|
|
|
- kAppDelegate.setLoginController()
|
|
|
- SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
|
|
|
-
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
- }
|
|
|
- } else {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
|
|
|
- SwiftProgressHUD.shared().showText(response.description)
|
|
|
-
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
+ } catch {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)")
|
|
|
+ SwiftProgressHUD.shared().showText(response.description)
|
|
|
+ return Single<Any?>.just(nil)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // MARK: 返回数组
|
|
|
- /// 获取状态码返回数组
|
|
|
- ///
|
|
|
- /// - Parameters:
|
|
|
- /// - response: 响应结果 数组
|
|
|
- /// - completion: 回调
|
|
|
- private func getResponseArrayStatusCode(response:Response, completion: @escaping successCallArrayback) -> Void {
|
|
|
- let json = try? JSON(response.mapJSON())
|
|
|
- if response.statusCode == 200 {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json!.description)")
|
|
|
- let json = JSON(parseJSON: json!.description)
|
|
|
- let rootModel = RootModel(JSONString: json.description)
|
|
|
- let data = JSON(json["data"]).description
|
|
|
- rootModel?.data = data
|
|
|
- if rootModel!.code == 0 {
|
|
|
- let array = JSON(parseJSON: rootModel?.data ?? "").arrayObject ?? Array<Any>()
|
|
|
- completion(array)
|
|
|
- }else if rootModel!.code == 1 {
|
|
|
- SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!", textAlignment: .left)
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
+ // MARK: 泛型返回任意数组不是对象
|
|
|
+ func mapAnyArray() -> Single<[Any]?> {
|
|
|
+ return flatMap { response -> Single<[Any]?> in
|
|
|
+ do {
|
|
|
+ let json = try JSON(response.mapJSON())
|
|
|
+ if response.statusCode == 200 {
|
|
|
+ NXLLog("\nurl=\(String(describing: response.request!.url!))\nstatusCode=\(response.statusCode)\njson=\n\(json.description)");
|
|
|
+
|
|
|
+ let json = JSON(parseJSON: json.description)
|
|
|
+ let rootModel = RootModel(JSONString: json.description)
|
|
|
+ let data = JSON(json["data"]).description
|
|
|
+ rootModel?.data = data
|
|
|
+ if rootModel!.code == 0 {
|
|
|
+
|
|
|
+ let anys = JSON(parseJSON: rootModel?.data ?? "").arrayObject ?? Array<Any>()
|
|
|
+ return Single<[Any]?>.just(anys)
|
|
|
+ }else if rootModel!.code == 1 {
|
|
|
+ SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!")
|
|
|
+ return Single<[Any]?>.just(nil)
|
|
|
+ }else {
|
|
|
+ SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!")
|
|
|
+ return Single<[Any]?>.just(nil)
|
|
|
+ }
|
|
|
+ }else if response.statusCode == 401 {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json.description)")
|
|
|
+ let infoModel = InfoModel(JSONString: json.description)
|
|
|
+ SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
|
|
|
+ kAppDelegate.setLoginController()
|
|
|
+ return Single<[Any]?>.just(nil)
|
|
|
+ }else {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
|
|
|
+ SwiftProgressHUD.shared().showText(response.description)
|
|
|
+
|
|
|
+ return Single<[Any]?>.just(nil)
|
|
|
}
|
|
|
|
|
|
- }else {
|
|
|
- SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!")
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
- }
|
|
|
- }
|
|
|
- }else if response.statusCode == 401 {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json!.description)")
|
|
|
- let infoModel = InfoModel(JSONString: json?.description ?? "")
|
|
|
- kAppDelegate.setLoginController()
|
|
|
- SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
|
|
|
-
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
- }
|
|
|
- } else {
|
|
|
- let url = String(describing: response.request!.url!)
|
|
|
- NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
|
|
|
- SwiftProgressHUD.shared().showText(response.description)
|
|
|
-
|
|
|
- if let falseCallback = self.falseCallback {
|
|
|
- falseCallback()
|
|
|
+ } catch {
|
|
|
+ let url = String(describing: response.request!.url!)
|
|
|
+ NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)")
|
|
|
+ SwiftProgressHUD.shared().showText(response.description)
|
|
|
+ return Single<[Any]?>.just(nil)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-// MARK: - 泛型
|
|
|
-extension PrimitiveSequence where TraitType == SingleTrait, ElementType == Response {
|
|
|
+
|
|
|
// MARK: 泛型返回对象
|
|
|
- func map<T: BaseMappable>(_ type: T.Type) -> Single<T?> {
|
|
|
+ func mapObject<T: BaseMappable>(_ type: T.Type) -> Single<T?> {
|
|
|
return flatMap { response -> Single<T?> in
|
|
|
do {
|
|
|
let json = try JSON(response.mapJSON())
|
|
@@ -445,7 +453,7 @@ extension PrimitiveSequence where TraitType == SingleTrait, ElementType == Respo
|
|
|
}
|
|
|
|
|
|
// MARK: 泛型返回对象数组
|
|
|
- func mapArray<T: BaseMappable>(_ type: T.Type) -> Single<[T]?> {
|
|
|
+ func mapArrayObject<T: BaseMappable>(_ type: T.Type) -> Single<[T]?> {
|
|
|
return flatMap { response -> Single<[T]?> in
|
|
|
do {
|
|
|
let json = try JSON(response.mapJSON())
|