Commit 88f45ac7 authored by David黄金龙's avatar David黄金龙

数据解析

parent 28a6fb59
......@@ -64,6 +64,8 @@
A5ACE9572B4564F7002C94D2 /* YHBasicContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9252B4564F7002C94D2 /* YHBasicContentView.swift */; };
A5ACE9582B4564F7002C94D2 /* YHNoDataTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9262B4564F7002C94D2 /* YHNoDataTipView.swift */; };
A5ACE95E2B4571BF002C94D2 /* YHHomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE95D2B4571BF002C94D2 /* YHHomeViewController.swift */; };
A5D6AB1B2B46A1CC001C10A5 /* YHHomeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */; };
A5D6AB1D2B46AAFB001C10A5 /* YHHomePageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
......@@ -149,6 +151,8 @@
A5ACE9252B4564F7002C94D2 /* YHBasicContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHBasicContentView.swift; sourceTree = "<group>"; };
A5ACE9262B4564F7002C94D2 /* YHNoDataTipView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHNoDataTipView.swift; sourceTree = "<group>"; };
A5ACE95D2B4571BF002C94D2 /* YHHomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeViewController.swift; sourceTree = "<group>"; };
A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeModel.swift; sourceTree = "<group>"; };
A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomePageViewModel.swift; sourceTree = "<group>"; };
B6BB01E4C5DB87B66F0ECE84 /* Pods-galaxy.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-galaxy.release.xcconfig"; path = "Target Support Files/Pods-galaxy/Pods-galaxy.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
......@@ -504,6 +508,7 @@
A5ACE95A2B457128002C94D2 /* M */ = {
isa = PBXGroup;
children = (
A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */,
);
path = M;
sourceTree = "<group>";
......@@ -526,6 +531,7 @@
A5D6AB192B465DFF001C10A5 /* VM */ = {
isa = PBXGroup;
children = (
A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */,
);
path = VM;
sourceTree = "<group>";
......@@ -741,6 +747,8 @@
A5ACE9422B4564F7002C94D2 /* AppDelegate+Extension.swift in Sources */,
A5ACE93E2B4564F7002C94D2 /* UIImage+Extension.swift in Sources */,
A5ACE94C2B4564F7002C94D2 /* BsHUDErrorView.swift in Sources */,
A5D6AB1B2B46A1CC001C10A5 /* YHHomeModel.swift in Sources */,
A5D6AB1D2B46AAFB001C10A5 /* YHHomePageViewModel.swift in Sources */,
A5ACE9552B4564F7002C94D2 /* YHTabBarViewController.swift in Sources */,
A5ACE9402B4564F7002C94D2 /* String+Extension.swift in Sources */,
A5ACE9482B4564F7002C94D2 /* BsHUDWariningView.swift in Sources */,
......
......@@ -38,6 +38,7 @@ extension AppDelegate {
//1.数据解析
#if DEBUG
SmartConfig.debugMode = .verbose
// SmartConfig.debugMode = .none //for test hjl
#else
SmartConfig.debugMode = .none
#endif
......
......@@ -9,14 +9,28 @@
import Foundation
class YHHomeViewController: YHBaseViewController {
//C 对应的 VM
lazy var homeReqVM : YHHomePageViewModel = {
return YHHomePageViewModel()
}()
override func viewDidLoad() {
super.viewDidLoad()
//1.UI
initView()
//2.网络请求
requestData()
}
private func requestData() {
self.homeReqVM.getHomeConfig()
}
func initView()->Void {
private func initView()->Void {
navigationItem.title = "首页"
view.backgroundColor = UIColor(hex:0xE9E9E9)
}
......
//
// YHHomeModel.swift
// galaxy
//
// Created by davidhuangA on 2024/1/4.
// Copyright © 2024 www.davidhuang.com. All rights reserved.
//
import UIKit
import SmartCodable
//struct YHHomeModel : SmartCodable {
// var test : String = ""
//
//}
struct YHHomeCofigMode : SmartCodable {
var is_show_new_gift_bag_window : Int = -1
var is_show_new_gift_bag_entrance : Int = -1
var is_show_consult : Int = -1
var home_content : [YHHomeMode1]?
}
struct YHHomeMode1 : SmartCodable {
var id : Int = -1
var name : String?
var title : String?
var created_at : String?
var updated_at : String?
var deleted_at : String?
var content:[YHHomeMode0]?
}
struct YHHomeMode0 : SmartCodable {
var id : Int = -1
var plate_id : Int = -1
var img : String?
var button_copywriting : String?
var information_id : Int = -1
var is_auth : Int = -1
var sort : Int = -1
var display_type : String?
var created_at : String?
var updated_at : String?
var deleted_at : String?
}
//
// YHHomePageViewModel.swift
// galaxy
//
// Created by davidhuangA on 2024/1/4.
// Copyright © 2024 www.davidhuang.com. All rights reserved.
//
import UIKit
class YHHomePageViewModel {
//数据源
var configModel:YHHomeCofigMode?
}
//接口
extension YHHomePageViewModel {
//请求首页的配置
func getHomeConfig() {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.homeConfigApi
let _ = YHNetRequest.getRequest(url: strUrl) { json, code in
//1. json字符串 转 对象
guard let model = NetBaseModel.deserialize(dict: json) else {
print("error....底层解析出错了...")
return
}
print("model 是 ==>",model)
print(model)
} failBlock: { err in
print(err)
}
}
}
......@@ -36,9 +36,8 @@ class YHIntelligentServiceViewController: YHBaseViewController {
let json = """
{
"data": "balabala Team",
"errorCode": 0,
"errorMessage": "操作成功",
"success":true,
"code": 0,
"msg": "操作成功",
"test": {
"test1": "test1-value",
"test2": "test2-value",
......
......@@ -11,13 +11,13 @@ import SmartCodable
struct NetBaseModel: SmartCodable {
var data : SmartAny?
var errorCode : Int = -1
var errorMessage : String = ""
var success : Bool = false
var code : Int = -1
var msg : String = ""
var other : SmartAny?
var test: TestModel = TestModel()
var testArr:[TestModel] = []
// var test: TestModel = TestModel()
// var testArr:[TestModel] = []
}
struct TestModel: SmartCodable {
......
......@@ -2,293 +2,31 @@
// BsAllApiName.swift
// BaiSiSMApp
//
// Created by davidhuang on 2022/10/18.
// Copyright © 2022 www.davidhuang.com. All rights reserved.
// Created by davidhuang on 2024/01/04.
// Copyright © 2024 www.davidhuang.com. All rights reserved.
//
class YHAllApiName {
//===============登录相关 开始===============
//手机号码、密码 登录
static let loginByPwd = "user/UserLoginV2/loginByPwd"
//手机号码、验证码 登录
static let loginByVerifyCode = "user/UserLoginV2/loginByPhone"
//更改手机号
static let changedPhone = "user/User/changeUserPhone"
//获取验证码
static let verifyCode = "user/VerificationCodeV2/sendCode"
//手机一键登录
static let loginByOnePress = "user/UserLoginV2/oneClickPhoneLogin"
//苹果登录
static let appleLogin = "user/UserLoginV2/appleLogin"
//苹果登录绑定手机号
static let appleLoginBindPhone = "user/UserLoginV2/appleLoginBindPhone"
//手机号码是否注册
static let checkPhoneReigster = "user/UserLoginV2/checkPhoneRegister"
//修改密码
static let resetPwd = "user/user/editUserPassword"
//用户注销
static let unRegister = "user/user/destroy"
//检查更新
static let checkAppLastVersion = "system/AppVersion/getLastestVersion"
//===============登录相关 结束===============
//===============用户信息相关 开始===============
//用户详细信息
static let userDetailInfo = "user/user/userDetail"
//更新 用户详细信息
static let updateUserInfo = "user/user/updateUserInfo"
//上传图片
static let uploadImage = "system/Media/uploadBase64Image"
//确认用户是否有未读信息
static let reqUnreadMsgNum = "message/officialNotification/latestMonthUnreadNum"
//===============用户信息相关 结束===============
//===============用户反馈 开始===============
//用户反馈
static let userFeedBack = "user/Feedback/feedback"
//===============用户反馈 结束===============
//===============我的档案 开始===============
//用户额外信息
static let userExtInfo = "user/user/getUserExtInfo"
//获取用户信息选择项目
static let userSelection = "dictionary/DataDictionary/getUserDataList"
//获取用户提交过的健康状态详情
static let userHealthConditionDetail = "health/HealthCondition/getUserHealthConditionDetail"
//获取用户相关的健康状态问题列表
static let userHealthConditionList = "health/HealthCondition/getHealthConditionList"
//提交健康状态
static let submitHealthConditionReport = "health/HealthCondition/submitHealthConditionReport"
//===============我的档案 结束===============
//===============站内消息 开始===============
//获取站内信 通知列表
static let reqMsgList = "message/officialNotification/getNotificationList"
//更新信息为已读状态
static let updateMsgReadedStatus = "message/officialNotification/addReadRecord"
//查询用户是否有未读消息 --- for test hjl 还没有定义
static let queryMsgReadedStatus = "user/user/getUserExtInfo"
//===============站内消息 结束===============
//===============我的订单 开始===============
//获取 我的订单列表数据
static let reqMyOrderListData = "order/order/getOrderList"
//获取 订单详情
static let reqGetOrderDetail = "order/order/getOrderDetail"
//创建订单
static let reqCreateOrder = "order/order/createOrderV1"
//取消订单(只有待支付的才能取消)
static let reqCancelOrder = "order/order/cancelOrder"
//支付宝获取支付orderStr
static let reqAliPayOrderStr = "pay/pay/aliPayOrderStr"
//申请退款
static let reqApplyRefund = "order/order/applyRefund"
//===============我的订单 结束===============
//===============量表 开始===============
//获取已测评历史记录列表
static let reqCpHistoryList = "jiankang/JkRiskCheck/getUserCheckHistoryList"
//测评结果选项详情
static let cpResultOptionDetail = "jiankang/JkRiskCheck/getUserCheckHistoryQuestionSnapshot"
//获取量表测评分类
static let reqScaleCategory = "jiankang/JkRiskCheck/getCategory"
//获取量表测评列表
static let reqScaleCategoryList = "jiankang/JkRiskCheck/getSubject"
//量表详情(不含问题)
static let reqScaleDetail = "jiankang/JkRiskCheck/getRiskCheckSubjectDetail"
//量表详情&问题列表
static let reqScaleQuestions = "jiankang/JkRiskCheck/getRiskCheckQuestion"
//根据标签获取量表详情&问题列表(自我评估)
static let reqScaleQuestionsForSelf = "jiankang/JkRiskCheck/getRiskCheckQuestionByTag"
//提交测评数据
static let submitScaleInfo = "jiankang/JkRiskCheck/submit"
//获取已测评历史记录详情
static let reqGetUserCheckHistoryInfo = "jiankang/JkRiskCheck/getUserCheckHistoryInfo"
//获取是否已经做过自我评估(即是否填写过量表)
static let checkHasFillScale = "jiankang/JkRiskCheck/getSelfCheckStatus"
//===============量表 结束===============
//===============主页 开始===============
//获取banner列表
static let reqGetBanner = "banner/banner/getBanner"
//助眠专辑列表
static let reqGetSleepAlbumList = "album/album/getSleepAlbumList"
//===============主页 结束===============
//===============商品 开始===============
//获取上架的商品列表
static let reqGetProductList = "product/product/getProductList"
//获取指定商品详情
static let reqGetProduct = "product/product/getProduct"
//咨询服务展示选取的时间段
static let reqGetConsultTimePeriod = "product/consult/getConsultTimePeriod"
//===============商品 结束===============
//===============标签 开始===============
//全部的标签
static let allTagsApi = "user/tag/getRisk"
//已选标签
static let selectedTagsApi = "user/tag/getTags"
//设置标签
static let setTagsApi = "user/tag/set"
//===============标签 结束===============
//===============睡眠曲 开始===============
//睡眠曲分类列表
static let getSleepMusicCategorys = "sleep/SleepMusic/getAllCategorys"
//睡眠曲列表
static let getSleepMusicList = "sleep/SleepMusic/list"
//===============睡眠曲 结束===============
//===============科普视频 开始===============
//科普视频分类列表
static let getSleepVideoCategorys = "sleep/SleepVideo/getAllCategorys"
//科普视频列表
static let reqGetSleepVideoList = "sleep/SleepVideo/list"
//科普视频首页列表
static let reqGetIndexVideoList = "sleep/SleepVideo/getIndexVideoList"
//===============科普视频 结束===============
//===============公开讲座 开始===============
//公开讲座列表
static let getOpenLectureList = "lecture/OpenLecture/list"
//===============公开讲座 结束===============
//===============行业资讯 开始===============
//资讯首页列表数据
static let getIndexKnowledgeList = "jiankang/JkKnowledge/getIndexKnowledgeList"
//文章列表
static let reqGetKnowledgeList = "jiankang/JkKnowledge/getKnowledgeList"
//===============行业资讯 结束===============
//===============安睡 开始===============
//专辑详情
static let albumDetail = "album/album/getDetail"
//专辑中音乐列表
static let albumMusicList = "album/album/getAlbumMusicList"
//增加专辑浏览量
static let addAlbumLookCount = "album/album/addLookCount"
//视频或音乐点击播放埋点
static let addPlayCount = "sleep/SleepPlayHistory/play"
//===============安睡 开始===============
//===============门诊 开始===============
//获取门诊列表
static let getClinicList = "clinic/clinic/getClinicList"
//门诊详情
static let getClinicDetail = "clinic/clinic/getDetail"
//门诊绑定医生医生列表
static let getBindDoctorList = "clinic/clinic/getBindDoctorList"
//===============门诊 结束===============
class YHAllApiName {
//===============医生 开始===============
//医生列表
static let getDoctorList = "sleep/Doctor/getDoctorList"
//接口 模块名 Common
struct Common {
//具体的业务接口
//首页配置接口
static let homeConfigApi = "common/homepage-config/index"
}
//医生详情
static let getDoctorDetail = "sleep/Doctor/detail"
//医生直播及采访视频列表
static let getDoctorVideoList = "sleep/Doctor/getDoctorVideoList"
//首页搜索
static let searchClinicDoctorList = "clinic/clinic/searchClinicDoctorList"
//===============医生 结束===============
//接口 模块名 Common2
struct Common2 {
//具体的业务接口
//首页配置接口
static let loginByPwd = "common/homepage-config/index"
}
//===============用户-跳转链接 开始===============
//获取睡眠日记跳转链接
static let getSleepDiaryUrl = "user/user/getSleepDiaryUrl"
//获取cbti训练跳转链接
static let getCBTIJumpUrl = "user/user/getCBTIJumpUrl"
//===============用户-跳转链接 结束===============
}
......@@ -12,19 +12,16 @@ class YHBaseUrlManager {
static let shared = YHBaseUrlManager()
//开发环境
static let baseUrlDev : String = "http://test.api.health.sleep321.com/"
//测试环境
//static let baseUrlTest : String = ""
static let baseUrlTest : String = "https://test-private-sphere.galaxy-immi.com/"
//正式环境
static let baseUrlRelease : String = "https://api.health.sleep321.com/"
//h5开发环境
static let h5UrlDev : String = "https://cdn.sleep321.com/trial/"
static let h5UrlDev : String = ""
//h5正式环境
static let h5UrlRelease : String = "https://cdn.sleep321.com/production/"
static let h5UrlRelease : String = ""
//用于外部编辑的
......@@ -34,7 +31,7 @@ class YHBaseUrlManager {
// MARK: - 当前使用的url
func curURL() -> String {
#if DEBUG
return urlForEditing ?? YHBaseUrlManager.baseUrlDev
return urlForEditing ?? YHBaseUrlManager.baseUrlTest
#else
return YHBaseUrlManager.baseUrlRelease
#endif
......
......@@ -7,6 +7,7 @@
import Foundation
import Alamofire
import CryptoSwift
class YHNetRequest: NSObject {
///成功回调
......@@ -27,6 +28,36 @@ class YHNetRequest: NSObject {
private var headers: HTTPHeaders?
///  数据请求
private var httpRequest: DataRequest?
override init() {
super.init()
var requestHeader = HTTPHeaders()
requestHeader.add(name:"Conatent-Type",value:"application/json")
requestHeader.add(name:"Accept",value:"application/json")
/*
以下是测试数据 for test hjl
*/
requestHeader.add(name:"appid",value:"1")
let dateStr = String(Date().timeIntervalSince1970)
requestHeader.add(name:"timestamp",value:dateStr)
requestHeader.add(name:"pass",value:"")
let appkey = "958364f87222c200a72414f492bf0e26"
var signOrgiString = "appid=" + "1" + "&" + "timestamp=" + dateStr + "&" + "appkey=" + appkey
let sign = signOrgiString.md5()
requestHeader.add(name:"sign",value:sign)
requestHeader.add(name: "token", value: "eyJpdiI6ImFheHNOa3dmYzZ0NUFSQzZUeDh2MVE9PSIsInZhbHVlIjoiblpTOVFWUFwvMHh4am5GUUxmaHkzTWUrZ1Roenk2QXp2V3FtbzJ2cHJSMXo2N2RnMGdpOG9JS3d3RlZtS1cweWhCcUpweVN6dGw5d2s2WldTRDdWODBhTGpFRWZmOFBiWDJib2lkSDNxSjJ2RXdRT2NhcXVLNGQ2ZjlFK1VIOTFRVjhld0F3eUk4amtcL0o1SDM5dm95TTB3RnZwcmVWaGZDU1FQckhCaGd6Y1cxMWNVUm5jRzZNOEhudWRrN1R1UzVreXR3YUhDeEdKNnhMbFlDNkIzendjVGJXRnFZbGpZUm1VRjltNHkxV0VXaUpHWTIwUVU3MjJCd3Z0YmgzTHNEOHRPTW5URks0T0lEdTFOYU5cL1lFZnJVdkpxRmpFSU9Dcms3R3NoQmlnbFRjY1ZpUFFtT0pDeE1SanpPemdoNFhSUUN0TkJ1V1VvXC9XWjdNSGVXMVNsVERHcThiM1dxVmZ1MlZrb3dDSUZLeFQ1SDBlcTl5NU1IUDJRQUtMeXZ4SnJOSjczWDhRWXZoZE1DVVIzclUzdEtNQkRRSHVRejNkSWpJNGZyUXVQOFlTbEd2Ujk1bjRKT3ZValltNXkwKzdTMCtJdDlRc015VDErMmdqQU52ejVcL0FLQ3BwdjJPQUZHeFozRjJKRzlINmxDTWdEcnQyaXZNaEVaZm1laXFMXC80TmJsblh0Q2JGWFVWRzhuWWF1SHc5SkFmMUdENExwR3FtRW1GTGpsZUcwNlFhbkdEU0dIZFQ5aU9FQlJWa2EzajRHOEt6NFwvXC9qNzhnWkpQOEFiOEIwbFdZWUVCcFd2YWZ4NHhcL1ZSOGZvaElnc3R2cVpFRG1GUTlwUEZwdFcxYnJEMjQ0Yk50bVd2ZU52cDlFZTBueEtmam55MUhLbDVlRjJGS0V3djlhQ1huZFU1QU1lYWZ6TEdQQ1wvK2V6VnFwSzJJeTVsZ2RCNE5qZkRRXC9GSzdvVkNcL1wvWUR2a2Q2NE5kVXBHYVloZDhtMlo1SHJFZnBITXlqWUQyZEVjQStGNGZiaXRPMVpJXC9ibDFXbG9HS21GSHhGVmNleG94UW9mQWhwY09qeDRJekpEQk9mMzZpdDNUSFwvUWpCa2xiYjlUcmRSdnZMTVpmajNkMU4zMk9mNWN3Mng2RlBWbEtYMGtwUDVZNjRsRlpTSmMyUWVMelo2K1J6R1VyYU9aYlVCMUFjZ2todm1kOWdcL3JUaXBCMjFleWliRTZhNDJ6d3dxb3llaHlSVmE4TjlkNCszMzJBbEdOY2N6ZE9zRW50K3VMUnV2d0xYMWtxM1RObkRiQTZDUGtpUHYzT01iQ2c1M1hxeEQ2RStTa3JRWUVpOGZ4d3lsOXpISTJzaGpLTHc0Z1NNZ0srRkdjbExET3drbFViVVdmRFhPVUZ2aU5VUkFqUTlkTUNDOHd4aUltUHNTSmtpWXlYMm9hY09JUCtGRlJ2amdYV2pIdEtBd2Frd1hEczA3Wk44T3FDY2t3dEk4RzhMMFJIK0x5WFB5cG9wTUR6dk9xdFZXVDk5eThFNmYzZ2IyTksyTGhDeHc4RlphTHBnc2ZJS2JRcWhtM1FYYm5TdFZLdnluYlZcL2N2TEYwYUNNOVNzMlpId0JKOXZSSEZ6d2tiQUdsdDErdkJYYXdvZnFsTTVnWFRNR1hcL2E2dXkrZ0h5bmRORFwvWW4yOVl1SHdZdjdra042bjBpUGIwWkJwZFZpMkY4RWtqTXpWT243Z0xBVGhLYzNiTStQSWhTQTNUV3BNSENTYXdYVGo0U0Y0WWlXTkRLdjBwend2Q3oySzJiUktKa1d2UlRrXC81emNwb0VEM3MzbFwvc3dLS0ZBcmxuaFladmtnXC9qb0JpOHFpYzlxeWNqVE5pYXNHbVcwajdnQUVPRngwK2xRdnZZOFdSXC9vb056UT09IiwibWFjIjoiN2MxYzYwYzFmMWY4ZmQyNjBjMjhjNTQ2ZGY2ZmY5NDE4MmRmN2IwNDg3ZWNmMWE1ZTk3YzhhMzFkNTBjYjhiMyJ9")
headers = requestHeader
}
///  链式语法
func url(_ url:String?) -> Self{
self.url = url ?? ""
......@@ -72,12 +103,20 @@ class YHNetRequest: NSObject {
AF.sessionConfiguration.timeoutIntervalForRequest = 30
httpRequest = AF.request(self.url!,method: self.requestType,parameters: self.params,encoding: URLEncoding(destination: .queryString),headers: requestHeaders,interceptor: nil,requestModifier: nil)
_ = httpRequest?.id
httpRequest?.responseString(encoding:.utf8,completionHandler: { string in
#if DEBUG
httpRequest?.responseString(completionHandler: { string in
#if DEBUG
print("\n网络请求已返回 string=\(string)")
#endif
#endif
self.completeHandle(string: string)
})
// httpRequest?.responseJSON(completionHandler: { string in
// #if DEBUG
// print("\n网络请求已返回 string=\(string)")
// #endif
// })
return httpRequest
}
/// 请求response完成处理
......@@ -114,7 +153,18 @@ class YHNetRequest: NSObject {
if statusCode == 200 {
guard let suclock = self.success else { return }
suclock(serverDict,statusCode)
// guard JSONSerialization.isValidJSONObject(serverDict) == true else {
// let dittt = self.handleJsonObjectNullValue(serverDict)
// suclock(dittt as! [String : Any],statusCode)
// return
// }
// suclock(serverDict,statusCode)
let dittt = self.handleJsonObjectNullValue(serverDict)
suclock(dittt as! [String : Any],statusCode)
} else {
let errorModel = YHNetErrorModel.init()
errorModel.responseErrorType = .failType
......@@ -126,10 +176,46 @@ class YHNetRequest: NSObject {
errorBlock(errorModel)
}
}
func handleJsonObjectNullValue(_ jsonObject: Any) -> Any {
if let jsonArray = jsonObject as? Array<Any> {
let noNullArray: [Any] = jsonArray.map { value in
if value is NSNull {
return ""
}else if let value = value as? Array<Any> {
return handleJsonObjectNullValue(value)
}else if let value = value as? Dictionary<AnyHashable, Any> {
return handleJsonObjectNullValue(value)
}else {
return value
}
}
return noNullArray
}else if let jsonDic = jsonObject as? Dictionary<AnyHashable, Any> {
let noNullDic: [AnyHashable: Any] = jsonDic.mapValues { value in
if value is NSNull {
return ""
}else if let value = value as? Array<Any> {
return handleJsonObjectNullValue(value)
}else if let value = value as? Dictionary<AnyHashable, Any> {
return handleJsonObjectNullValue(value)
}else {
return value
}
}
return noNullDic
}
return jsonObject
}
}
extension YHNetRequest {
class func getRequest(url:String, params:[String:Any] = [:], successBlock: SuccessHandlerType!, failBlock: FailureHandlerType!) -> Request? {
YHLOG(message:"\n发起请求的URL是===> url = \(url)")
return YHNetRequest().url(url).requestType(.get).success(successBlock).failed(failBlock).startRequest()
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment