在ios中初始化一个数组,比如:
NSMutableArray *array = [[NSMutableArray alloc] init];
如果,想看这个array中某个index下的object是否为空时,怎么做呢?
我平常ruby用惯了,所以很自然的,使用索引去取,然后判断是不是nil就行:
[array objectAtIndex:0];
结果,抛出异常,*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
原因是,NSMutableArray初始化的时候是空数组,并不存在index是0的对象,所以取数据越界了。
解决方案,在数组初始化后,先给根据数组的长度填充NSNull对象。
for (NSInteger i = 0; i < 4; ++i) { [array addObject:[NSNull null]]; }
这样,再取出的数据就不会抛出NSRangeException异常了。
以后想要使用非空对象时,直接替换对应index的NSNull即可:
[array replaceObjectAtIndex:0 withObject:object];
原创帖,转发请注明出处:http://thierry-xing.iteye.com/blog/1773354
相关推荐
如果需要反向操作,即从JSON数据创建模型对象,可以使用`NSKeyedUnarchiver`,它也会自动处理`NSNull`。 ```objc NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 ...
在iOS开发中,后台返回的数据排空,即`NSNull`或`nil`值的处理,是一个常见的问题,尤其在与服务器进行数据交互时。服务器返回的数据可能存在缺失或者异常,导致程序在解析过程中可能出现崩溃。本教程将深入探讨如何...
该项目为Objective-C编写的ZXAvoidCrash设计源码,致力于预防NSNull对象和Objective-C常用对象(如NSArray/NSMutableArray, NSString/NSMutableString等)的崩溃。该工具支持KVC调用,包含455个文件,涵盖181个头...
当需要表示一个对象存在,但其值为空时,可以使用NSNull的对象。例如,当一个数组应该包含一个对象,但实际上该位置没有对象时,可以放一个[NSNull null]。它不同于nil,因为nil是用于对象指针的,而NSNull是一个...
③ NSNULL:[NSNull null] 是一个对象,他用在不能使用 nil 的场合。 因为在 NSArray 和 NSDictionary 中 nil 有特殊的含义(表示列表结束),所以不能在集合中放入 nil 值。如要确实需要存储一个表示“什么都没有”...
总之,当遇到因`null`导致的JSON解析错误时,可以采取替换`null`的策略来解决问题。同时,对于JavaScript开发者,了解`undefined`和`null`的差异,以及如何检查和处理它们,也对确保代码的健壮性至关重要。
因为nil不能直接放入集合中,所以我们需要使用NSNull来代替。这样可以避免混淆,并确保程序的正常运行。 ```objc NSArray *array = [NSArray arrayWithObjects:@"one", @"two", [NSNull null], nil]; ...
### 项目中的常见问题及其解决方案 #### 一、代码规范问题 在软件开发过程中,遵循良好的代码规范至关重要。这不仅能提高代码的可读性和可维护性,还能减少潜在的错误和冲突。 **解决建议:** - 建立一套统一的...
这段代码使用了`enumerateKeysAndObjectsUsingBlock:`方法遍历`originalDict`,当值不为空或`NSNull`时,将其添加到`filteredDict`中。 除了手动过滤,还可以使用Swift的`filter`方法,但这需要项目中包含Swift代码...
为了解决这些问题,开发者通常需要编写容错代码来确保程序的健壮性。本篇将详细介绍如何通过重写操作符来实现数组和字典的容错处理。 首先,让我们来看看数组的容错处理。在数组中,我们可能需要获取某个特定索引的...
为解决这个问题,可以使用Method Swizzling替换`NSArray`的`objectAtIndex:`方法,添加一个判断来确保索引的有效性。对于nil值初始化导致的崩溃,需要确保在创建数组时提供非nil的对象。 其次,字典插入nil值或读取...
由于Swift不允许返回数组中包含不同类型的元素,所以不能像Objective-C那样使用NSNull。取而代之的是,我们可以使用可选类型(Value?)来表示可能为空的值,用nil来表示字典中没有找到对应的值。以下是如何实现这个...
使用递归方式遍历网络返回数据,找到字符串类型为[NSNull class] 替换为@“”。或者去我的github:https://github.com/chenXming/SetNulllWithStr.git 不要吝啬给个星。
这里我们将深入探讨如何解决这些问题。 1. **问题现象** 当服务器返回的JSON数据中某个字段值为`null`时,使用如JsonKit这样的第三方库进行解析,会将`null`解析为`NSNull`对象,而不是`nil`。例如: ```json ...
JJException 常见问题... 无法识别的选择器已发送给实例(方法不存在异常) NSNull(方法不存在异常) NSArray,NSMutableArray,NSDictonary,NSMutableDictionary(数组越界,键值参数异常) KVO(忘记删除keypath
NullSafe是NSNull上的一个简单类别,它为无法识别的消息返回nil而不是引发异常。 这消除了导致崩溃的常见原因,例如,JSON数据包含空值而不是数组或字符串,并且应用程序中的网络代码不希望它。 支持的iOS和SDK版本 ...
- 学会使用断点调试等功能排查问题。 - **构建基本界面**: - 使用Storyboard或其他UI工具构建应用程序的基础界面布局。 - 学习如何调整控件的位置、大小等属性。 - **小结**: - 总结前几节学习的重点,回顾...