`
thierry.xing
  • 浏览: 665206 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
580fa9c1-4a0c-3f40-a55a-c9256ce73302
Sencha Touch中...
浏览量:0
社区版块
存档分类
最新评论

使用NSNull解决NSMutableArray NSRangeException问题

    博客分类:
  • iOS
 
阅读更多

在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

 

 

2
0
分享到:
评论

相关推荐

    son数据去除nsnull

    如果需要反向操作,即从JSON数据创建模型对象,可以使用`NSKeyedUnarchiver`,它也会自动处理`NSNull`。 ```objc NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 ...

    ios-后台返回数据排空(nsnull nil)处理.zip

    在iOS开发中,后台返回的数据排空,即`NSNull`或`nil`值的处理,是一个常见的问题,尤其在与服务器进行数据交互时。服务器返回的数据可能存在缺失或者异常,导致程序在解析过程中可能出现崩溃。本教程将深入探讨如何...

    基于Objective-C的ZXAvoidCrash设计源码,预防NSNull和常用对象崩溃工具

    该项目为Objective-C编写的ZXAvoidCrash设计源码,致力于预防NSNull对象和Objective-C常用对象(如NSArray/NSMutableArray, NSString/NSMutableString等)的崩溃。该工具支持KVC调用,包含455个文件,涵盖181个头...

    总结IOS中nil、Nil、NULL和NSNull区别

    当需要表示一个对象存在,但其值为空时,可以使用NSNull的对象。例如,当一个数组应该包含一个对象,但实际上该位置没有对象时,可以放一个[NSNull null]。它不同于nil,因为nil是用于对象指针的,而NSNull是一个...

    IOS 基础之nil,NULL,NSNULL区别详解

    ③ NSNULL:[NSNull null] 是一个对象,他用在不能使用 nil 的场合。 因为在 NSArray 和 NSDictionary 中 nil 有特殊的含义(表示列表结束),所以不能在集合中放入 nil 值。如要确实需要存储一个表示“什么都没有”...

    解决JSON数据因为null导致数据加载失败的方法

    总之,当遇到因`null`导致的JSON解析错误时,可以采取替换`null`的策略来解决问题。同时,对于JavaScript开发者,了解`undefined`和`null`的差异,以及如何检查和处理它们,也对确保代码的健壮性至关重要。

    iOS中nil、Nil、NULL、NSNull详解

    因为nil不能直接放入集合中,所以我们需要使用NSNull来代替。这样可以避免混淆,并确保程序的正常运行。 ```objc NSArray *array = [NSArray arrayWithObjects:@"one", @"two", [NSNull null], nil]; ...

    项目中的问题

    ### 项目中的常见问题及其解决方案 #### 一、代码规范问题 在软件开发过程中,遵循良好的代码规范至关重要。这不仅能提高代码的可读性和可维护性,还能减少潜在的错误和冲突。 **解决建议:** - 建立一套统一的...

    oc.zip_NSArray_NSDictionary_去空

    这段代码使用了`enumerateKeysAndObjectsUsingBlock:`方法遍历`originalDict`,当值不为空或`NSNull`时,将其添加到`filteredDict`中。 除了手动过滤,还可以使用Swift的`filter`方法,但这需要项目中包含Swift代码...

    数组,字典容错

    为了解决这些问题,开发者通常需要编写容错代码来确保程序的健壮性。本篇将详细介绍如何通过重写操作符来实现数组和字典的容错处理。 首先,让我们来看看数组的容错处理。在数组中,我们可能需要获取某个特定索引的...

    解决iOS中常见的几种Crash1

    为解决这个问题,可以使用Method Swizzling替换`NSArray`的`objectAtIndex:`方法,添加一个判断来确保索引的有效性。对于nil值初始化导致的崩溃,需要确保在创建数组时提供非nil的对象。 其次,字典插入nil值或读取...

    Swift中使用可选类型完美解决占位问题

    由于Swift不允许返回数组中包含不同类型的元素,所以不能像Objective-C那样使用NSNull。取而代之的是,我们可以使用可选类型(Value?)来表示可能为空的值,用nil来表示字典中没有找到对应的值。以下是如何实现这个...

    ios-iOS-解决网络返回数据为空问题.zip

    使用递归方式遍历网络返回数据,找到字符串类型为[NSNull class] 替换为@“”。或者去我的github:https://github.com/chenXming/SetNulllWithStr.git 不要吝啬给个星。

    iOS中json解析出现的null,nil,NSNumber的解决办法

    这里我们将深入探讨如何解决这些问题。 1. **问题现象** 当服务器返回的JSON数据中某个字段值为`null`时,使用如JsonKit这样的第三方库进行解析,会将`null`解析为`NSNull`对象,而不是`nil`。例如: ```json ...

    JJException:保护Objective-C应用程序(保护App不闪退)

    JJException 常见问题... 无法识别的选择器已发送给实例(方法不存在异常) NSNull(方法不存在异常) NSArray,NSMutableArray,NSDictonary,NSMutableDictionary(数组越界,键值参数异常) KVO(忘记删除keypath

    NullSafe:NullSafe是NSNull上的一个简单类别,对于无法识别的消息返回nil而不是引发异常

    NullSafe是NSNull上的一个简单类别,它为无法识别的消息返回nil而不是引发异常。 这消除了导致崩溃的常见原因,例如,JSON数据包含空值而不是数组或字符串,并且应用程序中的网络代码不希望它。 支持的iOS和SDK版本 ...

    ios应用教程入门

    - 学会使用断点调试等功能排查问题。 - **构建基本界面**: - 使用Storyboard或其他UI工具构建应用程序的基础界面布局。 - 学习如何调整控件的位置、大小等属性。 - **小结**: - 总结前几节学习的重点,回顾...

Global site tag (gtag.js) - Google Analytics