iOS开发中为NSNull的分类添加“属性”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/79101320

场景:

后台返回的数据中的某个字段对应着一个数组,这个数组是UITableView的数据源。

前提:我们将后台返回的JSON数据直接转成了字典使用,并没有将字典转成一个模型。

在返回UITableView的cell个数的方法里我们直接使用了数组。假设这个数组对应的字段是data,我们将后台返回的JSON数据转成了字典dic;

方法:NSArray * arr = dic[@”data”]; return arr.count; 一般情况下程序并不会出现错误,可当后台返回的字段data突然变成了null,那么我们的程序就会崩溃。

解决方法:

1.将我们已经转成的字典转成模型(model)。

NSArray * arr = model.data。 return arr.count; arr即使是nil也不会让程序崩溃, 如果后台返回了null,那么arr.count就是0了.

2.为NSNull添加一个分类,分类中添加一个count的“属性”,这个属性并不是我们通常理解的属性(我们知道分类要想添加属性,需要使用runtime,我并没有用到runtime),我只为这个属性重写了get方法,并且get方法返回的是0 。

.h文件

.m文件

实现 虽然我现在并没有见到其他人用过,可这也算是解决问题的一种思路。自己去为NSNull写一个分类还可以在在出现null的时候及时提醒我们,并且不会让程序崩溃。

3.不要让后台返回null。

本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。��

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

使用Burpsuite扩展Hackvertor绕过WAF并解密XOR

最近,我一直在忙于开发自己的一个Burp扩展Hackvertor。这是一个具有基于标签转换功能的编码器,相比起Burp内置的解码器它的功能要强大的多。通过标签的...

15210
来自专栏烙馅饼喽的技术分享

用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用原型链和EventTrigger

原型链是JS的必备,作为ECMAScript4,原型链也是支持的。 特别说明,ActionScript3是支持完整的面向对象继承支持的,原型链只在某些非常特殊的...

30460
来自专栏xingoo, 一个梦想做发明家的程序员

剑指OFFER之树的子结构(九度OJ1520)

题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行一个整数n,m(...

204100
来自专栏mathor

matlab—特殊变量类型与档案存取

这里举个例子,有一个学生structure,包含姓名、邮箱、学号、成绩,应该如何创建这个structure

10840
来自专栏智能合约

base62编码

1.1K40
来自专栏云霄雨霁

范式总结

15840
来自专栏一个会写诗的程序员的博客

一致性(连续性)hash算法(Consistent hashing)一致性(连续性)hash算法(Consistent hashing)

Consistent hashing is a scheme that provides hash table functionality in a way t...

14720
来自专栏丁科的专栏

pytorch 学习笔记之编写 C 扩展

在之前的文章中,我们已经了解了如何自定义 Module。这篇主要讲解pytorch利用 CFFI 进行 C 语言扩展。包括两个基本的步骤(docs):编写 C ...

1K00
来自专栏CDA数据分析师

实用小工具,教你轻松转化Python通用数据格式

已独立成项目在github上面 dataformat, 涉及模块 os, getopt, sys。 1 需求 在进行hadoop测试时,需要造大量数据,例如某个...

21050
来自专栏ascii0x03的安全笔记

PySide——Python图形化界面入门教程(四)

PySide——Python图形化界面入门教程(四)               ——创建自己的信号槽               ——Creating Yo...

370100

扫码关注云+社区

领取腾讯云代金券