From 9c0a8714ad259850fc9007df0b2c5fc80096e4bc Mon Sep 17 00:00:00 2001 From: fengshuo <963787902@qq.com> Date: Thu, 29 Dec 2022 19:03:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E7=9A=84=E6=97=B6=E5=80=99=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E5=BC=95=E8=B5=B7=E5=B4=A9=E6=BA=83=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Login/Presenter/LoginFullInfoPresenter.m | 19 ++++--- .../Login/View/LoginVerifCodeViewController.m | 56 +++++++++++++++---- .../Session/Content/MessageContentGuildView.m | 5 +- .../Presenter/XPMineUserInfoEditPresenter.m | 13 +++-- .../Api/Api+EnterpriseRecharge.m | 40 +++++++++++++ .../Mine/View/Noble/Api/Api+NobleCenter.m | 12 +++- .../Main/Mine/View/XPMineViewController.m | 21 +++---- xplan-ios/Main/Monents/Api/Api+Monents.m | 45 +++++++-------- .../View/XPMonentsPublishViewController.m | 9 +-- .../View/XPArrangeMicViewController.m | 13 +++-- .../XPRoomFunctionContainerView.m | 25 +++++---- .../MenuContainerView/XPRoomSendTextView.m | 5 +- .../Room/View/RoomHeaderView/RoomHeaderView.m | 31 +++++----- .../Setting/Presenter/XPRoomTopicPresenter.m | 19 ++++--- .../UserCard/View/XPUserCardViewController.m | 5 +- .../Room/View/WishGift/Api/Api+WishGift.m | 12 ++-- xplan-ios/Main/Room/View/XPMiniRoomView.m | 19 ++++--- .../Main/Room/View/XPRoomViewController.m | 11 ++-- xplan-ios/Main/Tabbar/Api/Api+Main.m | 19 ++++--- xplan-ios/Main/XPWebViewController.m | 13 +++-- 20 files changed, 246 insertions(+), 146 deletions(-) create mode 100644 xplan-ios/Main/Mine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m diff --git a/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m b/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m index d340eaed..bfe44f07 100644 --- a/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m +++ b/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m @@ -9,6 +9,7 @@ ///Api #import "Api+Login.h" #import "LoginFullInfoProtocol.h" +#import "NSMutableDictionary+Saft.h" ///Tool #import "AccountInfoStorage.h" ///Model @@ -55,25 +56,25 @@ NSString * uid = [[AccountInfoStorage instance] getUid]; NSString * ticket = [[AccountInfoStorage instance] getTicket]; NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params setObject:avatar forKey:@"avatar"]; - [params setObject:gender forKey:@"gender"]; - [params setObject:nick forKey:@"nick"]; - [params setObject:uid forKey:@"uid"]; - [params setObject:ticket forKey:@"ticket"]; + [params safeSetObject:avatar forKey:@"avatar"]; + [params safeSetObject:gender forKey:@"gender"]; + [params safeSetObject:nick forKey:@"nick"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:ticket forKey:@"ticket"]; if (inviteCode.length > 0) { - [params setObject:inviteCode forKey:@"inviteCode"]; + [params safeSetObject:inviteCode forKey:@"inviteCode"]; } if (roomUid.length > 0) { - [params setObject:roomUid forKey:@"roomUid"]; + [params safeSetObject:roomUid forKey:@"roomUid"]; } if (shareUid.length > 0) { - [params setObject:shareUid forKey:@"shareUid"]; + [params safeSetObject:shareUid forKey:@"shareUid"]; } if (shareChannel.length > 0) { - [params setObject:shareChannel forKey:@"shareChannel"]; + [params safeSetObject:shareChannel forKey:@"shareChannel"]; } [Api completeUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] complementInfoSuccess]; diff --git a/xplan-ios/Main/Login/View/LoginVerifCodeViewController.m b/xplan-ios/Main/Login/View/LoginVerifCodeViewController.m index 230d65f0..d902ffb9 100644 --- a/xplan-ios/Main/Login/View/LoginVerifCodeViewController.m +++ b/xplan-ios/Main/Login/View/LoginVerifCodeViewController.m @@ -11,7 +11,6 @@ #import ///Tool #import "ThemeColor.h" -#import "CountDownHelper.h" #import "XPMacro.h" ///Presenter #import "LoginVerifCodePresent.h" @@ -20,7 +19,7 @@ ///View #import "LoginVerifCodeView.h" -@interface LoginVerifCodeViewController () +@interface LoginVerifCodeViewController () ///标题的容器 @property (nonatomic,strong) UIStackView *titleStackView; ///标题 @@ -37,14 +36,11 @@ @property (nonatomic,strong) UIButton *retryCodeButton; ///返回按钮 @property (nonatomic,strong) UIButton *backButton; +@property (strong, nonatomic) dispatch_source_t timer; @end @implementation LoginVerifCodeViewController -- (void)dealloc { - [[CountDownHelper shareHelper] stopCountDown]; -} - - (BOOL)isHiddenNavBar { return YES; } @@ -67,12 +63,11 @@ - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; - [[CountDownHelper shareHelper] stopCountDown]; + [self stopCountDown]; } #pragma mark - Private Method - (void)initSubViews { - [CountDownHelper shareHelper].delegate = self; [self.view addSubview:self.backButton]; [self.view addSubview:self.titleStackView]; [self.view addSubview:self.codeView]; @@ -140,7 +135,7 @@ } - (void)disMissVC { - [[CountDownHelper shareHelper] stopCountDown]; + [self stopCountDown]; UIViewController *vc = self.presentingViewController; while (vc.presentingViewController) { vc = vc.presentingViewController; @@ -149,10 +144,49 @@ [self.navigationController popToRootViewControllerAnimated:NO]; } +// 停止倒计时 +- (void)stopCountDown { + if (self.timer != nil) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } +} + +// 开始倒计时 +- (void)openCountdownWithTime:(int)totalTime{ + if (time <= 0) { + return; + } + __block int time = totalTime; //倒计时时间 + if (self.timer != nil) { + dispatch_source_cancel(self.timer); + } + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + __weak typeof(self) weakself = self; + dispatch_source_set_event_handler(self.timer, ^{ + __strong typeof(weakself) self = weakself; + if(time <= 0){ //倒计时结束,关闭 + dispatch_source_cancel(self.timer); + dispatch_async(dispatch_get_main_queue(), ^{ + [self onCountdownFinish]; + }); + }else{ + time--; + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + [self onCountdownOpen:time]; + }); + + } + }); + dispatch_resume(self.timer); +} + #pragma mark - LoginVerifCodeProtocol - (void)loginSuccess { [self showSuccessToast:@"登录成功"]; - [[CountDownHelper shareHelper] stopCountDown]; [self disMissVC]; } @@ -164,7 +198,7 @@ - (void)phoneSmsCodeSuccess { self.codeSendLabel.hidden = NO; self.codeSendLabel.text = [NSString stringWithFormat:@"验证码已发送至:%@", self.phone]; - [[CountDownHelper shareHelper] openCountdownWithTime:60]; + [self openCountdownWithTime:60]; } #pragma mark - CountDownHelperDelegate diff --git a/xplan-ios/Main/Message/View/Session/Content/MessageContentGuildView.m b/xplan-ios/Main/Message/View/Session/Content/MessageContentGuildView.m index 77e7c619..01712b2e 100644 --- a/xplan-ios/Main/Message/View/Session/Content/MessageContentGuildView.m +++ b/xplan-ios/Main/Message/View/Session/Content/MessageContentGuildView.m @@ -18,6 +18,7 @@ #import "AccountInfoStorage.h" #import "XPMineGuildViewController.h" #import "XCCurrentVCStackManager.h" +#import "NSMutableDictionary+Saft.h" #define MESSAGE_MAX_WIDTH 230 #define MESSAGE_TEXT_PADDING 10 @interface MessageContentGuildView () @@ -270,8 +271,8 @@ } if (recordId.length > 0) { NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params setObject:recordId forKey:@"recordId"]; - [params setObject:[AccountInfoStorage instance].getUid forKey:@"uid"]; + [params safeSetObject:recordId forKey:@"recordId"]; + [params safeSetObject:[AccountInfoStorage instance].getUid forKey:@"uid"]; ///0拒绝 1同意 NSString * type = sender.tag == 1000? @"0" : @"1"; if (self.attachment.second == Custom_Message_Sub_Hall_Apply_Join || self.attachment.second == Custom_Message_Sub_Hall_Manager_Invite || self.attachment.second == Custom_Message_Sub_Hall_Apply_Exit) { diff --git a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m index caeb1637..9130cb3f 100644 --- a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m +++ b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m @@ -11,6 +11,7 @@ ///Tool #import "AccountInfoStorage.h" #import "UploadImage.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "XPMineUserInfoEditModel.h" #import "UserInfoModel.h" @@ -83,23 +84,23 @@ NSString * ticket = [[AccountInfoStorage instance] getTicket]; NSMutableDictionary * dic = [NSMutableDictionary dictionary]; if (avatar.length > 0) { - [dic setValue:avatar forKey:@"avatar"]; + [dic safeSetObject:avatar forKey:@"avatar"]; } if (nick.length > 0) { - [dic setValue:nick forKey:@"nick"]; + [dic safeSetObject:nick forKey:@"nick"]; } if (birth.length > 0) { - [dic setValue:birth forKey:@"birth"]; + [dic safeSetObject:birth forKey:@"birth"]; } if (userDesc.length > 0) { - [dic setValue:userDesc forKey:@"userDesc"]; + [dic safeSetObject:userDesc forKey:@"userDesc"]; } - [dic setObject:uid forKey:@"uid"]; - [dic setObject:ticket forKey:@"ticket"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:ticket forKey:@"ticket"]; [Api completeUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; [[self getView] completeUserInfoSuccess:infoModel]; diff --git a/xplan-ios/Main/Mine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m b/xplan-ios/Main/Mine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m new file mode 100644 index 00000000..44241fc4 --- /dev/null +++ b/xplan-ios/Main/Mine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m @@ -0,0 +1,40 @@ +// +// Api+EnterpriseRecharge.m +// xplan-ios +// +// Created by 冯硕 on 2022/5/14. +// + +#import "Api+EnterpriseRecharge.h" +#import "NSMutableDictionary+Saft.h" +@implementation Api (EnterpriseRecharge) + +///企业包的充值列表 ++ (void)enterpriseRechargeList:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { + [self makeRequest:@"chargeprod/listV2" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, channelType, nil]; +} + + +/// 请求支付参数 +/// @param completion 完成 +/// @param chargeProdId 订单的id +/// @param payChannel 支付的渠道 +/// @param clientIp ip +/// @param uid uid +/// @param ticket ticket ++ (void)requestPay:(HttpRequestHelperCompletion)completion chargeProdId:(NSString *)chargeProdId payChannel:(NSString *)payChannel clientIp:(NSString *)clientIp uid:(NSString *)uid ticket:(NSString *)ticket roomUid:(NSString *)roomUid { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic safeSetObject:chargeProdId forKey:@"chargeProdId"]; + [dic safeSetObject:payChannel forKey:@"payChannel"]; + [dic safeSetObject:clientIp forKey:@"clientIp"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:ticket forKey:@"ticket"]; + if (roomUid.integerValue> 0) { + [dic safeSetObject:roomUid forKey:@"roomUid"]; + } + [HttpRequestHelper request:@"charge/pay/apply" method:HttpRequestHelperMethodPOST params:dic completion:completion]; +} + + + +@end diff --git a/xplan-ios/Main/Mine/View/Noble/Api/Api+NobleCenter.m b/xplan-ios/Main/Mine/View/Noble/Api/Api+NobleCenter.m index 6df69c42..cdbf31ea 100644 --- a/xplan-ios/Main/Mine/View/Noble/Api/Api+NobleCenter.m +++ b/xplan-ios/Main/Mine/View/Noble/Api/Api+NobleCenter.m @@ -6,7 +6,7 @@ // #import "Api+NobleCenter.h" - +#import "NSMutableDictionary+Saft.h" @implementation Api (NobleCenter) /// 贵族中心等级列表 @@ -75,5 +75,15 @@ } +/// 使用钻石开通贵族 +/// @param complection 完成回调 +/// @param roomUid 房主的uid ++ (void)openWithDiamond:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + if (roomUid.length > 0) { + [dic safeSetObject:roomUid forKey:@"roomUid"]; + } + [HttpRequestHelper request:@"vip/openWithDiamond" method:HttpRequestHelperMethodPOST params:dic completion:complection]; +} @end diff --git a/xplan-ios/Main/Mine/View/XPMineViewController.m b/xplan-ios/Main/Mine/View/XPMineViewController.m index 4ae2a11e..f3056bc8 100644 --- a/xplan-ios/Main/Mine/View/XPMineViewController.m +++ b/xplan-ios/Main/Mine/View/XPMineViewController.m @@ -20,6 +20,7 @@ #import "Api+RoomSetting.h" #import "AccountInfoStorage.h" #import "ClientConfig.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "XPMineItemModel.h" #import "UserInfoModel.h" @@ -536,23 +537,23 @@ NSMutableDictionary * params = [NSMutableDictionary dictionary]; NSString * uid = [AccountInfoStorage instance].getUid; NSString * ticket = [AccountInfoStorage instance].getTicket; - [params setObject:ticket forKey:@"ticket"]; - [params setObject:uid forKey:@"uid"]; - [params setObject:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; + [params safeSetObject:ticket forKey:@"ticket"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; if (roomInfo.title.length > 0) { - [params setObject:roomInfo.title forKey:@"title"]; + [params safeSetObject:roomInfo.title forKey:@"title"]; } if (roomInfo.roomPwd.length > 0) { - [params setObject:roomInfo.roomPwd forKey:@"roomPwd"]; + [params safeSetObject:roomInfo.roomPwd forKey:@"roomPwd"]; } else{ - [params setObject:@"" forKey:@"roomPwd"]; + [params safeSetObject:@"" forKey:@"roomPwd"]; } if (roomInfo.tagId > 0) { - [params setObject:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; } - [params setObject:@(RoomType_MiniGame) forKey:@"type"]; - [params setObject:mgId forKey:@"mgId"]; - [params setObject:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; + [params safeSetObject:@(RoomType_MiniGame) forKey:@"type"]; + [params safeSetObject:mgId forKey:@"mgId"]; + [params safeSetObject:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; [Api ownerUpdateRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { if (code == 200) { [XPRoomViewController openRoom:[AccountInfoStorage instance].getUid mgId:mgId viewController:self]; diff --git a/xplan-ios/Main/Monents/Api/Api+Monents.m b/xplan-ios/Main/Monents/Api/Api+Monents.m index 32154d5a..5718ee06 100644 --- a/xplan-ios/Main/Monents/Api/Api+Monents.m +++ b/xplan-ios/Main/Monents/Api/Api+Monents.m @@ -7,6 +7,7 @@ #import "Api+Monents.h" #import "NSObject+MJExtension.h" +#import "NSMutableDictionary+Saft.h" @implementation Api (Monents) /// 朋友圈动态推荐列表 @@ -43,9 +44,9 @@ /// @param uid 类型 uid + (void)monentsInteractiveList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize uid:(NSString *)uid { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:dynamicId forKey:@"id"]; - [dic setValue:pageSize forKey:@"pageSize"]; - [dic setValue:uid forKey:@"uid"]; + [dic safeSetObject:dynamicId forKey:@"id"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; + [dic safeSetObject:uid forKey:@"uid"]; [HttpRequestHelper request:@"interactive/list" method:HttpRequestHelperMethodPOST params:dic completion:completion]; } @@ -124,11 +125,11 @@ /// @param timestamp 上一个评论的时间戳 + (void)monentsCommentList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize timestamp:(NSString *)timestamp { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:dynamicId forKey:@"dynamicId"]; - [dic setValue:uid forKey:@"uid"]; - [dic setValue:pageSize forKey:@"pageSize"]; + [dic safeSetObject:dynamicId forKey:@"dynamicId"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; if (timestamp.length > 0) { - [dic setValue:timestamp forKey:@"timestamp"]; + [dic safeSetObject:timestamp forKey:@"timestamp"]; } [HttpRequestHelper request:@"dynamic/comment/list" method:HttpRequestHelperMethodGET params:dic completion:completion]; } @@ -164,15 +165,15 @@ /// @param resList 发布的图片 + (void)monentsPublish:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type worldId:(NSString *)worldId content:(NSString *)content resList:(NSArray *)resList { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setObject:uid forKey:@"uid"]; - [dic setObject:type forKey:@"type"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:type forKey:@"type"]; - [dic setObject:content.length > 0 ? content : @"" forKey:@"content"]; + [dic safeSetObject:content.length > 0 ? content : @"" forKey:@"content"]; if (worldId.length > 0) { - [dic setObject:worldId forKey:@"worldId"]; + [dic safeSetObject:worldId forKey:@"worldId"]; } if (resList.count > 0) { - [dic setObject:resList forKey:@"resList"]; + [dic safeSetObject:resList forKey:@"resList"]; } [HttpRequestHelper postSkillCard:@"dynamic/square/publish" params:dic.toJSONString completion:completion]; @@ -188,12 +189,12 @@ /// @param pageSize 一页多少个 + (void)monentsTopicLatestList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:uid forKey:@"uid"]; - [dic setValue:types forKey:@"types"]; - [dic setValue:worldId forKey:@"worldId"]; - [dic setValue:pageSize forKey:@"pageSize"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:types forKey:@"types"]; + [dic safeSetObject:worldId forKey:@"worldId"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; if (dynamicId.length > 0) { - [dic setValue:dynamicId forKey:@"dynamicId"]; + [dic safeSetObject:dynamicId forKey:@"dynamicId"]; } [HttpRequestHelper request:@"dynamic/latestList" method:HttpRequestHelperMethodPOST params:dic completion:completion]; } @@ -207,12 +208,12 @@ /// @param pageSize 一页多少个 + (void)monentsTopicRecommendList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:uid forKey:@"uid"]; - [dic setValue:types forKey:@"types"]; - [dic setValue:worldId forKey:@"worldId"]; - [dic setValue:pageSize forKey:@"pageSize"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:types forKey:@"types"]; + [dic safeSetObject:worldId forKey:@"worldId"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; if (dynamicId.length > 0) { - [dic setValue:dynamicId forKey:@"dynamicId"]; + [dic safeSetObject:dynamicId forKey:@"dynamicId"]; } [HttpRequestHelper request:@"dynamic/listV2" method:HttpRequestHelperMethodPOST params:dic completion:completion]; } diff --git a/xplan-ios/Main/Monents/View/XPMonentsPublishViewController.m b/xplan-ios/Main/Monents/View/XPMonentsPublishViewController.m index c90fbd42..8c412bd0 100644 --- a/xplan-ios/Main/Monents/View/XPMonentsPublishViewController.m +++ b/xplan-ios/Main/Monents/View/XPMonentsPublishViewController.m @@ -18,6 +18,7 @@ #import "UploadImage.h" #import "TTPopup.h" #import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "MonentsTopicModel.h" #import "MonentsPicResInfo.h" @@ -185,18 +186,18 @@ NSMutableDictionary * dict= [NSMutableDictionary dictionary]; MonentsPicResInfo * infor = [MonentsPicResInfo modelWithDictionary:resp]; if (infor.path) { - [dict setValue:infor.path forKey:@"resUrl"]; + [dict safeSetObject:infor.path forKey:@"resUrl"]; } if (infor.format) { - [dict setValue:infor.format forKey:@"format"]; + [dict safeSetObject:infor.format forKey:@"format"]; } if (infor.w) { - [dict setValue:@(infor.w) forKey:@"width"]; + [dict safeSetObject:@(infor.w) forKey:@"width"]; } if (infor.h) { - [dict setValue:@(infor.h) forKey:@"height"]; + [dict safeSetObject:@(infor.h) forKey:@"height"]; } [dataArray addObject:dict]; if (self.imageCount == array.count) { diff --git a/xplan-ios/Main/Room/View/ArrangeMic/View/XPArrangeMicViewController.m b/xplan-ios/Main/Room/View/ArrangeMic/View/XPArrangeMicViewController.m index e5e8ea62..70df5e58 100644 --- a/xplan-ios/Main/Room/View/ArrangeMic/View/XPArrangeMicViewController.m +++ b/xplan-ios/Main/Room/View/ArrangeMic/View/XPArrangeMicViewController.m @@ -19,6 +19,7 @@ #import "ApiHost.h" #import "UIImage+Utils.h" #import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "ArrangeMicModel.h" #import "AttachmentModel.h" @@ -561,10 +562,10 @@ if (position.length > 0) { if (self.userInfo.type == ArrangeMicType_Room_PK) { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:position forKey:@"position"]; - [dic setValue:uid forKey:@"uid"]; - [dic setValue:@(userInfo.groupType) forKey:@"groupType"]; - [dic setValue:userInfo.nick forKey:@"nick"]; + [dic safeSetObject:position forKey:@"position"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:@(userInfo.groupType) forKey:@"groupType"]; + [dic safeSetObject:userInfo.nick forKey:@"nick"]; AttachmentModel * attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_Room_PK; attachment.second = Custom_Message_Sub_Room_PK_Manager_Up_Mic; @@ -578,8 +579,8 @@ [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; } else { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:@(position.integerValue) forKey:@"micPosition"]; - [dic setValue:@(uid.integerValue) forKey:@"uid"]; + [dic safeSetObject:@(position.integerValue) forKey:@"micPosition"]; + [dic safeSetObject:@(uid.integerValue) forKey:@"uid"]; AttachmentModel *attachement = [[AttachmentModel alloc]init]; attachement.first = CustomMessageType_Queue; attachement.second = Custom_Message_Sub_Queue_Invite; diff --git a/xplan-ios/Main/Room/View/BaseUIContainerView/XPRoomFunctionContainerView.m b/xplan-ios/Main/Room/View/BaseUIContainerView/XPRoomFunctionContainerView.m index c4ce7e18..8c107f29 100644 --- a/xplan-ios/Main/Room/View/BaseUIContainerView/XPRoomFunctionContainerView.m +++ b/xplan-ios/Main/Room/View/BaseUIContainerView/XPRoomFunctionContainerView.m @@ -33,6 +33,7 @@ #import "StatisticsServiceHelper.h" #import "NSObject+MJExtension.h" #import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "RoomInfoModel.h" #import "MicroQueueModel.h" @@ -1558,30 +1559,30 @@ NSMutableDictionary * params = [NSMutableDictionary dictionary]; NSString * uid = [AccountInfoStorage instance].getUid; NSString * ticket = [AccountInfoStorage instance].getTicket; - [params setObject:ticket forKey:@"ticket"]; - [params setObject:uid forKey:@"uid"]; - [params setObject:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; + [params safeSetObject:ticket forKey:@"ticket"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; if (roomInfo.title.length > 0) { - [params setObject:roomInfo.title forKey:@"title"]; + [params safeSetObject:roomInfo.title forKey:@"title"]; } if (roomInfo.roomPwd.length > 0) { - [params setObject:roomInfo.roomPwd forKey:@"roomPwd"]; + [params safeSetObject:roomInfo.roomPwd forKey:@"roomPwd"]; } else{ - [params setObject:@"" forKey:@"roomPwd"]; + [params safeSetObject:@"" forKey:@"roomPwd"]; } if (roomInfo.tagId > 0) { - [params setObject:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; } if ([itemInfo.mgId isEqualToString:@"0"]) { - [params setObject:@(RoomType_Game) forKey:@"type"]; - [params setObject:@"0" forKey:@"mgId"]; + [params safeSetObject:@(RoomType_Game) forKey:@"type"]; + [params safeSetObject:@"0" forKey:@"mgId"]; } else { - [params setObject:@(RoomType_MiniGame) forKey:@"type"]; - [params setObject:itemInfo.mgId forKey:@"mgId"]; + [params safeSetObject:@(RoomType_MiniGame) forKey:@"type"]; + [params safeSetObject:itemInfo.mgId forKey:@"mgId"]; } - [params setObject:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; + [params safeSetObject:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; [Api ownerUpdateRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { if (code == 200) { diff --git a/xplan-ios/Main/Room/View/MenuContainerView/XPRoomSendTextView.m b/xplan-ios/Main/Room/View/MenuContainerView/XPRoomSendTextView.m index d2880f2a..edba7f0b 100644 --- a/xplan-ios/Main/Room/View/MenuContainerView/XPRoomSendTextView.m +++ b/xplan-ios/Main/Room/View/MenuContainerView/XPRoomSendTextView.m @@ -17,6 +17,7 @@ #import "UIImage+Utils.h" #import "XPConstant.h" #import "AccountInfoStorage.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "XPMessageRemoteExtModel.h" #import "UserInfoModel.h" @@ -98,8 +99,8 @@ } id uidStr = [uidArray toJSONObject]; id nickStr = [nickArray toJSONObject]; - [remoteExt setObject:uidStr forKey:@"atUids"]; - [remoteExt setObject:nickStr forKey:@"atNames"]; + [remoteExt safeSetObject:uidStr forKey:@"atUids"]; + [remoteExt safeSetObject:nickStr forKey:@"atNames"]; message.remoteExt = remoteExt; ///网易易盾 拦截高风险 diff --git a/xplan-ios/Main/Room/View/RoomHeaderView/RoomHeaderView.m b/xplan-ios/Main/Room/View/RoomHeaderView/RoomHeaderView.m index a792208d..d5e98372 100644 --- a/xplan-ios/Main/Room/View/RoomHeaderView/RoomHeaderView.m +++ b/xplan-ios/Main/Room/View/RoomHeaderView/RoomHeaderView.m @@ -27,6 +27,7 @@ #import "Api+Room.h" #import "XCCurrentVCStackManager.h" #import "StatisticsServiceHelper.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "RoomInfoModel.h" #import "UserInfoModel.h" @@ -254,15 +255,15 @@ NSMutableDictionary *params = [NSMutableDictionary dictionary]; NSString *uid = [AccountInfoStorage instance].getUid; NSString *ticket = [AccountInfoStorage instance].getTicket; - [params setObject:uid forKey:@"uid"]; - [params setObject:@(shareInfo.shareType) forKey:@"shareType"]; - [params setObject:ticket forKey:@"ticket"]; - [params setObject:@(shareInfo.type) forKey:@"sharePageId"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:@(shareInfo.shareType) forKey:@"shareType"]; + [params safeSetObject:ticket forKey:@"ticket"]; + [params safeSetObject:@(shareInfo.type) forKey:@"sharePageId"]; if (shareInfo.shareUrl.length > 0) { - [params setObject:shareInfo.shareUrl forKey:@"shareUrl"]; + [params safeSetObject:shareInfo.shareUrl forKey:@"shareUrl"]; } if (shareInfo.roomUid > 0) { - [params setObject:@(shareInfo.roomUid) forKey:@"targetUid"]; + [params safeSetObject:@(shareInfo.roomUid) forKey:@"targetUid"]; } [HttpRequestHelper POST:@"usershare/save" params:params success:^(BaseModel * _Nonnull data) { @@ -286,10 +287,10 @@ } self.hadShowCollectInScreen = YES; NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:[AccountInfoStorage instance].getUid forKey:@"uid"]; - [dic setValue:self.hostDelegate.getUserInfo.nick forKey:@"nick"]; - [dic setValue:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid] forKey:@"targetUid"]; - [dic setValue:self.hostDelegate.getRoomInfo.nick forKey:@"targetNick"]; + [dic safeSetObject:[AccountInfoStorage instance].getUid forKey:@"uid"]; + [dic safeSetObject:self.hostDelegate.getUserInfo.nick forKey:@"nick"]; + [dic safeSetObject:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid] forKey:@"targetUid"]; + [dic safeSetObject:self.hostDelegate.getRoomInfo.nick forKey:@"targetNick"]; NSDictionary * data = @{@"data":dic}; AttachmentModel *attachment = [[AttachmentModel alloc]init]; attachment.first = CustomMessageType_Collection_Room; @@ -324,14 +325,14 @@ attachMent.second = Custom_Message_Sub_Room_Tip_ShareRoom; NSMutableDictionary * dic = [NSMutableDictionary dictionary]; NSString * uid = [AccountInfoStorage instance].getUid; - [dic setValue:uid forKey:@"uid"]; + [dic safeSetObject:uid forKey:@"uid"]; NSMutableDictionary * userDic = [NSMutableDictionary dictionary]; UserInfoModel * userInfo = [self.hostDelegate getUserInfo]; RoomInfoModel * roomInfo = [self.hostDelegate getRoomInfo]; - [userDic setValue:roomInfo.nick.length > 0 ? roomInfo.nick : @"" forKey:@"targetNick"]; - [userDic setValue:@(roomInfo.uid) forKey:@"targetUid"]; - [userDic setValue:userInfo.nick.length > 0 ? userInfo.nick : @"" forKey:@"nick"]; - [dic setValue:userDic forKey:@"data"]; + [userDic safeSetObject:roomInfo.nick.length > 0 ? roomInfo.nick : @"" forKey:@"targetNick"]; + [userDic safeSetObject:@(roomInfo.uid) forKey:@"targetUid"]; + [userDic safeSetObject:userInfo.nick.length > 0 ? userInfo.nick : @"" forKey:@"nick"]; + [dic safeSetObject:userDic forKey:@"data"]; attachMent.data = dic; NSString *sessionID = [NSString stringWithFormat:@"%ld", [self.hostDelegate getRoomInfo].roomId]; diff --git a/xplan-ios/Main/Room/View/Setting/Presenter/XPRoomTopicPresenter.m b/xplan-ios/Main/Room/View/Setting/Presenter/XPRoomTopicPresenter.m index 6b671be4..d77f07a3 100644 --- a/xplan-ios/Main/Room/View/Setting/Presenter/XPRoomTopicPresenter.m +++ b/xplan-ios/Main/Room/View/Setting/Presenter/XPRoomTopicPresenter.m @@ -13,6 +13,7 @@ #import "Api+RoomSetting.h" #import "XPRoomTopicProtocol.h" #import "RoomInfoModel.h" +#import "NSMutableDictionary+Saft.h" @implementation XPRoomTopicPresenter @@ -21,26 +22,26 @@ NSString * uid = [AccountInfoStorage instance].getUid; NSString * ticket = [AccountInfoStorage instance].getTicket; NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params setObject:ticket forKey:@"ticket"]; - [params setObject:uid forKey:@"uid"]; - [params setObject:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; + [params safeSetObject:ticket forKey:@"ticket"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; if (roomInfo.title.length > 0) { - [params setObject:roomInfo.title forKey:@"title"]; + [params safeSetObject:roomInfo.title forKey:@"title"]; } if (roomInfo.roomPwd.length > 0) { - [params setObject:roomInfo.roomPwd forKey:@"roomPwd"]; + [params safeSetObject:roomInfo.roomPwd forKey:@"roomPwd"]; } if (roomInfo.tagId > 0) { - [params setObject:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; } - [params setValue:roomDesc forKey:@"roomDesc"]; + [params safeSetObject:roomDesc forKey:@"roomDesc"]; if (introduction.length > 0) { - [params setValue:introduction forKey:@"introduction"]; + [params safeSetObject:introduction forKey:@"introduction"]; } - [params setObject:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; + [params safeSetObject:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; ///获取房间角色 NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; diff --git a/xplan-ios/Main/Room/View/UserCard/View/XPUserCardViewController.m b/xplan-ios/Main/Room/View/UserCard/View/XPUserCardViewController.m index ecd1eaa8..f7b9ec80 100644 --- a/xplan-ios/Main/Room/View/UserCard/View/XPUserCardViewController.m +++ b/xplan-ios/Main/Room/View/UserCard/View/XPUserCardViewController.m @@ -20,6 +20,7 @@ #import "XCCurrentVCStackManager.h" #import "StatisticsServiceHelper.h" #import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "UserInfoModel.h" #import "XPUserCardItemModel.h" @@ -910,8 +911,8 @@ return; } NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:@(model.position.integerValue) forKey:@"micPosition"]; - [dic setValue:@(self.targetUserInfo.uid) forKey:@"uid"]; + [dic safeSetObject:@(model.position.integerValue) forKey:@"micPosition"]; + [dic safeSetObject:@(self.targetUserInfo.uid) forKey:@"uid"]; AttachmentModel *attachement = [[AttachmentModel alloc]init]; attachement.first = CustomMessageType_Queue; attachement.second = Custom_Message_Sub_Queue_Invite; diff --git a/xplan-ios/Main/Room/View/WishGift/Api/Api+WishGift.m b/xplan-ios/Main/Room/View/WishGift/Api/Api+WishGift.m index 15318f60..a4209a84 100644 --- a/xplan-ios/Main/Room/View/WishGift/Api/Api+WishGift.m +++ b/xplan-ios/Main/Room/View/WishGift/Api/Api+WishGift.m @@ -6,7 +6,7 @@ // #import "Api+WishGift.h" - +#import "NSMutableDictionary+Saft.h" @implementation Api (WishGift) ///添加心愿礼物 @@ -33,12 +33,12 @@ + (void)wishGiftAddItem:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid giftId:(NSString *)giftId itemId:(NSString *)itemId seq:(NSString *)seq targetNum:(NSString *)targetNum { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; if (itemId.length > 0) { - [dic setValue:itemId forKey:@"itemId"]; + [dic safeSetObject:itemId forKey:@"itemId"]; } - [dic setValue:roomUid forKey:@"roomUid"]; - [dic setValue:giftId forKey:@"giftId"]; - [dic setValue:seq forKey:@"seq"]; - [dic setValue:targetNum forKey:@"targetNum"]; + [dic safeSetObject:roomUid forKey:@"roomUid"]; + [dic safeSetObject:giftId forKey:@"giftId"]; + [dic safeSetObject:seq forKey:@"seq"]; + [dic safeSetObject:targetNum forKey:@"targetNum"]; [HttpRequestHelper request:@"wishGift/addItem" method:HttpRequestHelperMethodPOST params:dic completion:completion]; } diff --git a/xplan-ios/Main/Room/View/XPMiniRoomView.m b/xplan-ios/Main/Room/View/XPMiniRoomView.m index b6c54b76..21816274 100644 --- a/xplan-ios/Main/Room/View/XPMiniRoomView.m +++ b/xplan-ios/Main/Room/View/XPMiniRoomView.m @@ -23,6 +23,7 @@ #import "Api+Room.h" #import "XPCoreDataManager.h" #import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "RoomInfoModel.h" #import "MicroQueueModel.h" @@ -639,22 +640,22 @@ UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicOrderKey; - (NSDictionary *)configUpdateChatRoomQueueExt:(UserInfoModel *)userInfo { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:@(userInfo.gender) forKey:@"gender"]; - [dic setValue:userInfo.avatar forKey:@"avatar"]; - [dic setValue:@(userInfo.uid) forKey:@"uid"]; - [dic setValue:userInfo.nick forKey:@"nick"]; + [dic safeSetObject:@(userInfo.gender) forKey:@"gender"]; + [dic safeSetObject:userInfo.avatar forKey:@"avatar"]; + [dic safeSetObject:@(userInfo.uid) forKey:@"uid"]; + [dic safeSetObject:userInfo.nick forKey:@"nick"]; NSString * headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; if (headWearUrl.length > 0) { - [dic setValue:headWearUrl forKey:@"headWearUrl"]; + [dic safeSetObject:headWearUrl forKey:@"headWearUrl"]; } if (userInfo.micCircle.length) { - [dic setValue:userInfo.micCircle forKey:@"micCircle"]; + [dic safeSetObject:userInfo.micCircle forKey:@"micCircle"]; } if (userInfo.micNickColor.length) { - [dic setValue:userInfo.micNickColor forKey:@"micNickColor"]; + [dic safeSetObject:userInfo.micNickColor forKey:@"micNickColor"]; } - [dic setValue:@(userInfo.userVipInfoVO.enterHide) forKey:@"enterHide"]; - [dic setValue:@(userInfo.userVipInfoVO.preventKick) forKey:@"preventKick"]; + [dic safeSetObject:@(userInfo.userVipInfoVO.enterHide) forKey:@"enterHide"]; + [dic safeSetObject:@(userInfo.userVipInfoVO.preventKick) forKey:@"preventKick"]; return dic; } diff --git a/xplan-ios/Main/Room/View/XPRoomViewController.m b/xplan-ios/Main/Room/View/XPRoomViewController.m index 6617e7f2..7c2d5474 100644 --- a/xplan-ios/Main/Room/View/XPRoomViewController.m +++ b/xplan-ios/Main/Room/View/XPRoomViewController.m @@ -21,6 +21,7 @@ #import "DESEncrypt.h" #import "StatisticsServiceHelper.h" #import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" ///Model #import "RoomInfoModel.h" #import "UserInfoModel.h" @@ -380,12 +381,12 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 return; } if (self.userInfo.viewUrl.length > 0) { - [att setValue:self.userInfo.nick forKey:@"nick"]; - [att setValue:self.userInfo.viewUrl forKey:@"viewUrl"]; - [att setValue:@(self.userInfo.otherViewType) forKey:@"otherViewType"]; + [att safeSetObject:self.userInfo.nick forKey:@"nick"]; + [att safeSetObject:self.userInfo.viewUrl forKey:@"viewUrl"]; + [att safeSetObject:@(self.userInfo.otherViewType) forKey:@"otherViewType"]; } else if (self.userInfo.carEffect.length > 0) { - [att setValue:self.userInfo.carEffect forKey:@"effect"]; - [att setValue:self.userInfo.nick forKey:@"nick"]; + [att safeSetObject:self.userInfo.carEffect forKey:@"effect"]; + [att safeSetObject:self.userInfo.nick forKey:@"nick"]; } else { return; } diff --git a/xplan-ios/Main/Tabbar/Api/Api+Main.m b/xplan-ios/Main/Tabbar/Api/Api+Main.m index 25e255aa..43e298f4 100644 --- a/xplan-ios/Main/Tabbar/Api/Api+Main.m +++ b/xplan-ios/Main/Tabbar/Api/Api+Main.m @@ -8,6 +8,7 @@ #import "Api+Main.h" #import "YYUtility.h" #import "NSString+Utils.h" +#import "NSMutableDictionary+Saft.h" @implementation Api (Main) @@ -27,20 +28,20 @@ /// @param muid iOS:取idfa原值 /// @param fid idfa /// @param platOs 1 - [params setValue:@"0" forKey:@"evenType"]; + [params safeSetObject:@"0" forKey:@"evenType"]; if ([YYUtility idfa].length > 0) { - [params setValue:[YYUtility idfa] forKey:@"idfa"]; - [params setValue:[[YYUtility idfa] MD5String] forKey:@"idfaMd5"]; - [params setValue:[YYUtility idfa] forKey:@"muid"];//iOS:取idfa原值 - [params setValue:[YYUtility idfa] forKey:@"id"]; + [params safeSetObject:[YYUtility idfa] forKey:@"idfa"]; + [params safeSetObject:[[YYUtility idfa] MD5String] forKey:@"idfaMd5"]; + [params safeSetObject:[YYUtility idfa] forKey:@"muid"];//iOS:取idfa原值 + [params safeSetObject:[YYUtility idfa] forKey:@"id"]; } if ([YYUtility ipAddress].length > 0) { - [params setValue:[YYUtility ipAddress] forKey:@"ip"]; + [params safeSetObject:[YYUtility ipAddress] forKey:@"ip"]; } - [params setValue:@(1) forKey:@"platOs"]; - [params setValue:@"" forKey:@"imei"]; - [params setValue:@"" forKey:@"ua"]; + [params safeSetObject:@(1) forKey:@"platOs"]; + [params safeSetObject:@"" forKey:@"imei"]; + [params safeSetObject:@"" forKey:@"ua"]; [HttpRequestHelper request:@"juliang/ad/activeTrack" method:HttpRequestHelperMethodPOST params:params completion:complection]; } diff --git a/xplan-ios/Main/XPWebViewController.m b/xplan-ios/Main/XPWebViewController.m index b0f08903..c7c591dc 100644 --- a/xplan-ios/Main/XPWebViewController.m +++ b/xplan-ios/Main/XPWebViewController.m @@ -20,6 +20,7 @@ #import "XCCurrentVCStackManager.h" #import "XPMineUserInfoViewController.h" #import "XPMineRechargeViewController.h" +#import "NSMutableDictionary+Saft.h" ///vc #import "XPMineDressUpViewController.h" #import "XPDressUpShopViewController.h" @@ -478,15 +479,15 @@ NSString * const kProhibitRightSlip = @"prohibitRightSlip"; NSMutableDictionary *params = [NSMutableDictionary dictionary]; NSString *uid = [AccountInfoStorage instance].getUid; NSString *ticket = [AccountInfoStorage instance].getTicket; - [params setObject:uid forKey:@"uid"]; - [params setObject:@(shareInfo.shareType) forKey:@"shareType"]; - [params setObject:ticket forKey:@"ticket"]; - [params setObject:@(shareInfo.type) forKey:@"sharePageId"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:@(shareInfo.shareType) forKey:@"shareType"]; + [params safeSetObject:ticket forKey:@"ticket"]; + [params safeSetObject:@(shareInfo.type) forKey:@"sharePageId"]; if (shareInfo.shareUrl.length > 0) { - [params setObject:shareInfo.shareUrl forKey:@"shareUrl"]; + [params safeSetObject:shareInfo.shareUrl forKey:@"shareUrl"]; } if (shareInfo.roomUid > 0) { - [params setObject:@(shareInfo.roomUid) forKey:@"targetUid"]; + [params safeSetObject:@(shareInfo.roomUid) forKey:@"targetUid"]; } [HttpRequestHelper POST:@"usershare/save" params:params success:^(BaseModel * _Nonnull data) {