IOS判断NSArray是否为空
场景描述:判断一个集合是否为空,如果不为空执行A,如果为空执行B
Java实现方法
public void exec(){
List<String> list = this.getContent();
if (null != list && list.size()>0) {
//do something
}else{
//do nothing
}
}
IOS如何实现?先看下下面代码执行结果
- (void)viewDidLoad
{
[super viewDidLoad]; NSArray *ary ;
[self show:ary]; ary = nil;
[self show:ary]; ary = [[NSArray alloc]init];
[self show:ary]; ary = [NSMutableArray arrayWithObjects:@"11111", @"222",nil];
[self show:ary];
}
-(void) show:(NSArray *)ary{
NSLog(@"数组内容:%@",ary);
NSLog(@"数组class:%@",[ary class]); if (![ary isKindOfClass:[NSNull class]]) {
NSLog(@"NOT!!! isKindOfClass null");
}else{
NSLog(@"isKindOfClass null");
}
if (ary) {
NSLog(@"====非空=====");
}else{
NSLog(@"====空=====");
}
if (ary.count == 0) {
NSLog(@"count is 0");
}else{
NSLog(@"count is %lu",(unsigned long)ary.count);
}
NSLog(@"=====================华丽的分割线=======================");
}
执行结果如下:
2014-07-29 15:51:55.209 MyTempTest[297:60b]数组内容:(null)
2014-07-29 15:51:55.211 MyTempTest[297:60b]数组class:(null)
2014-07-29 15:51:55.212 MyTempTest[297:60b] NOT!!! isKindOfClass null
2014-07-29 15:51:55.213 MyTempTest[297:60b] ====空=====
2014-07-29 15:51:55.215 MyTempTest[297:60b] count is 0
2014-07-29 15:51:55.216 MyTempTest[297:60b] =====================华丽的分割线=======================
2014-07-29 15:51:55.217 MyTempTest[297:60b]数组内容:(null)
2014-07-29 15:51:55.218 MyTempTest[297:60b]数组class:(null)
2014-07-29 15:51:55.219 MyTempTest[297:60b] NOT!!! isKindOfClass null
2014-07-29 15:51:55.220 MyTempTest[297:60b] ====空=====
2014-07-29 15:51:55.221 MyTempTest[297:60b] count is 0
2014-07-29 15:51:55.222 MyTempTest[297:60b] =====================华丽的分割线=======================
2014-07-29 15:51:55.223 MyTempTest[297:60b]数组内容:(
)
2014-07-29 15:51:55.225 MyTempTest[297:60b]数组class:__NSArrayI
2014-07-29 15:51:55.226 MyTempTest[297:60b] NOT!!! isKindOfClass null
2014-07-29 15:51:55.227 MyTempTest[297:60b] ====非空=====
2014-07-29 15:51:55.228 MyTempTest[297:60b] count is 0
2014-07-29 15:51:55.229 MyTempTest[297:60b] =====================华丽的分割线=======================
2014-07-29 15:51:55.230 MyTempTest[297:60b]数组内容:(
11111,
222
)
2014-07-29 15:51:55.231 MyTempTest[297:60b]数组class:__NSArrayM
2014-07-29 15:51:55.232 MyTempTest[297:60b] NOT!!! isKindOfClass null
2014-07-29 15:51:55.233 MyTempTest[297:60b] ====非空=====
2014-07-29 15:51:55.234 MyTempTest[297:60b] count is 2
2014-07-29 15:51:55.235 MyTempTest[297:60b] =====================华丽的分割线=======================
结论:IOS判断一个数组是否为空,直接判断“ary.count”即可,即使ary尚未初始化也不会报“空指针”。
NSString *str ;
NSLog(@"%lu",(unsigned long)str.length);
2014-07-30 08:40:52.851 MyTempTest[391:60b] 0
objective-c里面声明一个类型,未初始化,直接调用方法都不报错?
IOS判断NSArray是否为空的更多相关文章
- iOS 判断数组是否为空
有人说可以用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法:用 (!array) ...
- iOS判断数组不为空
用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法: if(array != ni ...
- iOS 判断字符串是否为空
写一个字符串的扩展,实现判断字符串是否为空- (BOOL) isBlankString { if ([self isEqualToString:@"(null)"]) { retu ...
- iOS 判断数组不为空
if (array != nil && ![array isKindOfClass:[NSNull class]] && array.count != 0)
- iOS 中的block异常 判断block是否为空
我们在调用block时,如果这个block为nil,则程序会崩溃,报类似于EXC_BAD_ACCESS(code=1, address=0xc)异常[32位下的结果,如果是64位,则address=0 ...
- iOS数组的去重,判空,删除元素,删除重复元素 model排序 等
一: 去重 有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型.今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下. 1.利用NSDiction ...
- ios 判断用户是否开启权限---并跳转设置
ios 判断用户是否开启权限---并跳转设置 ios 判断用户是否开启权限---并跳转“系统设置” 1.判断 访问相册 或 相机 权限是否开启 2.检测是否开启定位 后面将持续更新 只有在应用请求过位 ...
- java中判断list是否为空的用法
1.如果想判断list是否为空,可以这么判断: if(null == list || list.size() ==0 ){ //为空的情况 }else{ //不为空的情况 } 2.list.isEmp ...
- JS心得——判断一个对象是否为空
判断一个对象是否为空对象,本文给出三种判断方法: 最常见的思路,for...in...遍历属性,为真则为"非空数组":否则为"空数组" 2.通过JSON自带的. ...
随机推荐
- Python档案袋(线程 )
Python的进程和线程是使用的操作系统的原生线程和进程,其是去调用操作系统的相应接口实现 进程:之间不可直接共享数据,是资源的集合,进程必须有一个线程 线程:基于进程,之间可直接共享数据,可执行,只 ...
- 【Storm篇】--Storm 容错机制
一.前述 Storm容错机制相比其他的大数据组件做的非常不错. 二.具体原因 结合Storm集群架构图: 我们的程序提交流程如下: 其中各个组件的作用如下: Nimbus资源调度任务分配接收jar ...
- Zabbix Server端配置文件说明
zabbix作为运维邻域不可缺少的一员,它的各种文档可是数不胜数啊,但是关于配置文件的解释与说明就有点少.这里列出zabbix配置文件篇之zabbix_server. Zabbix Server端配置 ...
- 快速搭建WebAPI(Odata+Code-First)附Odata条件查询表~
Odata是什么? 开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问Restful服务的OASIS标准.该标准由微软发起,前三个版本1.0.2.0.3.0都 ...
- qt cef嵌入web(二)
在qt cef嵌入web文章中已经讲述了怎么把cef页面嵌入到qt程序中,但是这样并不完美,因为如果需要在多个窗口上创建cef浏览器部件的话,在 消息监听部分没有办法做区分多个浏览器事件,在这篇文章中 ...
- Dubbo(一) —— 基础知识和项目搭建
一.分布式基础理论 1.什么是分布式系统? <分布式系统原理与范型>定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distribut ...
- 设计模式java实现合集
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 桥接模式:http://blog.csdn.net/jason05 ...
- Android--MediaRecorder录音录像
前言 Android除了支持播放多媒体文件之外,还可以从对应的硬件中捕获多媒体,比如从麦克风录音.从摄像头录像等.本篇博客讲解一下Android下如何通过MediaRecorder进行录音以及录像的步 ...
- git - 管理项目(SourceTree的使用)
Git 相关命令操作全 1.SourceTree 是什么? SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作.同时它也是M ...
- 当面试官说 “你还有什么问题想问的” ,你该如何回答?
阅读本文大概需要 4 分钟. 作者:黄小斜 来源:程序员江湖 程序员面试时经常会听到面试官说一些套话,比如"今天的面试就到这里了,回去等通知吧","你还有什么问题想问我的 ...