ios小技能:处理接口的暂无数据(代码片段)

iOS逆向 iOS逆向     2023-02-05     121

关键词:

引言

在日常开发中经常涉及数据列表的查询,处理服务侧无数据返回的情况或者网络异常的手段是iOS必备小技能。

I 处理暂无数据

网络请求失败,业务逻辑错误,返回数据为空都是需要处理界面的显示,推荐使用暂无数据进行提示。

1.1 用法

        if (weakSelf.viewModel.listDataArray.count == 0) 
            [weakSelf.viewModel.ShowNoviewSubject sendNext:QCTLocal(CRM_nodata_Info)];
            
        else
            [weakSelf.viewModel.hidenNoviewSubject sendNext:nil];
            
        

1.2 核心实现

V层初始化暂无数据视图:将视图添加到tableView,这样可以不影响下拉刷新和上拉加载

- (CRMNoDatatView *)NoView
    
    if (nil == _NoView) 
        
        CRMNoDatatView *tmpView = [[CRMNoDatatView alloc]init];
        
        _NoView = tmpView;
        [self.tableView addSubview:_NoView];
        
        __weak __typeof__(self) weakSelf = self;
        
        
        [_NoView mas_makeConstraints:^(MASConstraintMaker *make) 
            
            
            make.centerY.equalTo(weakSelf.tableView.mas_centerY).offset(kAdjustRatio(k_noteViewH));
            make.width.equalTo(weakSelf);
            
            
            
            make.left.right.bottom.equalTo(weakSelf.tableView);//tableView


            
        ];
        
        
        
    
    return _NoView;




- (void)ShowNoview:(NSString *)title img:(NSString*)imgName


    
    self.NoView.title = title;
    
    self.NoView.imgName = imgName;
    
    [self.tableView bringSubviewToFront:self.NoView];
    


V层监听C层的事件

    [self.viewModel.hidenNoviewSubject subscribeNext:^(id  _Nullable x) 
        weakSelf.NoView.hidden = YES;
    ];
    
    [self.viewModel.ShowNoviewSubject subscribeNext:^(id  _Nullable x) 
        weakSelf.NoView.hidden = NO;
        
        [weakSelf ShowNoview:x img:@"img_kongbai_zanwu"];

        
        
    ];

暂无数据视图的实现

// 显示暂无数据图片
- (UIImageView *)imageV
    if (nil == _imageV) 
        UIImageView *tmpView = [[UIImageView alloc]init];
        _imageV = tmpView;
        
        _imageV.contentMode = UIViewContentModeScaleAspectFit;

        _imageV.image = [UIImage imageNamed:@"icon_wushuju"];

        [self addSubview:_imageV];
        __weak __typeof__(self) weakSelf = self;

        
        [_imageV mas_makeConstraints:^(MASConstraintMaker *make) 
            make.centerX.equalTo(weakSelf);
            make.centerY.equalTo(weakSelf).offset(-kAdjustRatio(35));

            make.left.equalTo(weakSelf).offset(kAdjustRatio(33));
            
            make.right.equalTo(weakSelf).offset(kAdjustRatio(-33));
            
            

        ];
    
    return _imageV;



//显示暂无数据文本
- (UILabel *)label
    if (nil == _label) 
        UILabel *tmpView = [[UILabel alloc]init];
        _label = tmpView;
        [self addSubview:_label];
        __weak __typeof__(self) weakSelf = self;

        
        [_label mas_makeConstraints:^(MASConstraintMaker *make) 
            
            make.centerX.equalTo(weakSelf);
            make.top.equalTo(weakSelf.imageV.mas_bottom).offset(kAdjustRatio(22));
            
        
        _label.textAlignment = NSTextAlignmentCenter;

        
        _label.font = kPingFangFont(15);
        _label.textColor = rgb(51,51,51);

    
    return _label;





// 更新图片数据
-(void)setImgName:(NSString *)imgName
    _imgName = imgName;
    
    
    if (imgName.length<=0) 
        return;
    
    [self.imageV setImage:[UIImage imageNamed:imgName]];
    
    
        self.reloadbtnView.hidden = !self.isShowReloadBtn;
//    


- (void)setTitle:(NSString *)title
    _title = title;
    
    self.label.text = title;


see also

更多内容请关注#小程序:iOS逆向,只为你呈现有价值的信息,专注于移动端技术研究领域。

ios小技能:app侧退出登录处理流程(代码片段)

文章目录引言I清理当前账户相关信息(token、消息推送别名)1.1退出登录(token过期)的处理1.2移除消息推送别名II移除相关通知2.1背景2.2问题引言登录处理流程:上篇:前置知识https://blog.csdn.net/u011018979/article/details/124208271下篇... 查看详情

ios小技能:密码输入框右侧的明文显示按钮处理(代码片段)

引言应用场景:登录界面、密码修改界面效果:I实现显示隐藏按钮声明显示隐藏按钮@property(weak,nonatomic)UIButton*subscriptBtn4old;@property 查看详情

ios小技能:密码输入框右侧的明文显示按钮处理(代码片段)

引言应用场景:登录界面、密码修改界面效果:I实现显示隐藏按钮声明显示隐藏按钮@property(weak,nonatomic)UIButton*subscriptBtn4old;@property 查看详情

ios小技能:url编码(代码片段)

文章目录引言IURL编码1.1UTF8编码1.2URL特殊字符处理II判断剪贴板内容是否符合数字和链接的规则2.1弹出提示的兼容方案:`尽可能少的去调用会触发系统提示的方法`2.2检测剪切板内容是否匹配2.3检测剪切板的数据是否发生变化IIIUrl... 查看详情

ios小技能:url编码(代码片段)

文章目录引言IURL编码1.1UTF8编码1.2URL特殊字符处理II判断剪贴板内容是否符合数字和链接的规则2.1弹出提示的兼容方案:`尽可能少的去调用会触发系统提示的方法`2.2检测剪切板内容是否匹配2.3检测剪切板的数据是否发生变化IIIUrl... 查看详情

ios小技能:url编码(代码片段)

文章目录引言IURL编码1.1UTF8编码1.2URL特殊字符处理II判断剪贴板内容是否符合数字和链接的规则2.1弹出提示的兼容方案:`尽可能少的去调用会触发系统提示的方法`2.2检测剪切板内容是否匹配2.3检测剪切板的数据是否发生变化IIIUrl... 查看详情

ios小技能:消息推送扩展的使用(代码片段)

文章目录引言IServiceExtension开发步骤1.1创建NotificationServiceExtension1.2创建AudioTool用于处理语音播报1.3配置项目1.4注册推送seealso引言iOS15引入了消息推送的新属性中断级别interruptionLevel,具体的枚举值typedefNS_ENUM(NSUInteger,UNNotificationInt... 查看详情

ios小技能:消息推送扩展的使用(代码片段)

文章目录引言IServiceExtension开发步骤1.1创建NotificationServiceExtension1.2创建AudioTool用于处理语音播报1.3配置项目1.4注册推送seealso引言iOS15引入了消息推送的新属性中断级别interruptionLevel,具体的枚举值typedefNS_ENUM(NSUInteger,UNNotificationInt... 查看详情

java小技能:javadatabaseconnectivity(代码片段)

文章目录引言I.预备知识1.1JDBC1.2对象关系映射(ORM)1.3Java对象持久化(JavaDataObject)1.4传统的JDBCIIJDBC使用步骤2.1准备连接数据库的相关数据2.2书写jdbc程序步骤2.3代码示例2.4封装jdbc代码2.5预编译sqlIIIJDBC涉及的类和接口seealso引言J... 查看详情

ios小技能:文件预览分享(代码片段)

文章目录前言I第三方SDK分享文件1.1微信SDK1.2友盟SDKII原生API的文件预览及其他应用打开2.1预览文件2.2文件分享3.3控制是否显示copy、print、saveToCameraRoll前言应用场景:文件下载、打印I第三方SDK分享文件1.1微信SDK/**/**文件真实数据... 查看详情

ios小技能:日历的使用(案例:两个时间的比较获取最近30天的数据)(代码片段)

文章目录引言I日历的使用1.1两个时间的比较(NSDateComponents)1.2时间获取II案例2.1构造退款单号2.2计算两个时间的间隔(天)2.3时间格式化seealso引言预备知识:日历标识符NSCalendarIdentifierNSCalendarIdentifierGregorian//公历NSCalendarIdentifierBud... 查看详情

ios小技能:sku视图搭建(代码片段)

文章目录引言ISKU商品规格组合算法II相关问题2.1demo2.2数据问题seealso引言最小库存管理单元(StockKeepingUnit,SKU)是一个会计学名词,定义为库存管理中的最小可用单元。对于一种商品而言,当他的品牌、型号、配置、花色、容量... 查看详情

ios小技能:sku视图搭建(代码片段)

文章目录引言ISKU商品规格组合算法II相关问题2.1demo2.2数据问题引言最小库存管理单元(StockKeepingUnit,SKU)是一个会计学名词,定义为库存管理中的最小可用单元。对于一种商品而言,当他的品牌、型号、配置、花色、容量、生产... 查看详情

ios小技能:app侧退出登录处理流程

文章目录引言I清理当前账户相关信息(token、消息推送别名)1.1退出登录(token过期)的处理1.2移除消息推送别名II移除相关通知2.1背景2.2问题引言登录处理流程:上篇:前置知识https://blog.csdn.net/u011018979/article/details/124208271下篇... 查看详情

ios小技能:截获分析网络数据包(tcpdumpwireshark的原理和基本使用使用charles联调测试)(代码片段)

文章目录前言Itcpdump1.1预备知识1.2截获分析网络数据包1.3tcpdump常用的一些命令参数IIWireshark2.1原理2.2使用方法2.3封包详细信息(PacketDetailsPane)IIIiOS逆向抓包工具Charles前言抓取http/https的,建议使用Charles;如果是socket,推荐使用Wiresh... 查看详情

java小技能:异常处理(代码片段)

文章目录前言I异常的处理方式1.1抛异常1.2捕捉异常1.3抛异常和捕获异常的区别1.4产生异常II异常分类2.1异常的选择2.2编译时异常与运行时异常的语法检查区别III自定义的异常3.1如何自定义异常?3.2自定义异常示例IVhttp请求返回详... 查看详情

接口与抽象类小练习(代码片段)

...需要学习英语分析:乒乓球运动员:属性:姓名,年龄,技能:打乒乓球篮球运动员:属性:姓名年龄,技能:打篮球乒乓球教练:属性:姓名,年龄,技能:教练乒乓球篮球教练:属性:姓名,年龄技能:教练篮球运动员抽象... 查看详情

ios支付小技能:pos终端刷卡流程(代码片段)

文章目录引言IPOS终端刷卡流程1.1什么是POS机签购单?1.2签购单未打印,但持卡人收到扣款信息,商户的处理方案。1.3发卡行返回码seealso引言支付流程:下单:商户完成订单信息的录入,包括但不限于待付款总金额。手机号码录... 查看详情