您的位置:首页 > 移动开发

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArra

2014-08-05 11:01 471 查看

这个错误说的是一个不可变数组负值给了一个可变的数组。有可能你前面定义的数组是一个可变数组,但是在你其他方法里面用他的时候,他就是一个不可变数组,因为在可变数组拿到别的地方用的时候,他会默认为不可变的,可能这只是一个类里面你只是简单的声明了他吧,并没有进行对他初始化,或者分配什么内存,所以他只是一个不可变的数组,当你在其他地方用他的时候,他就默认为不可变的数组,他可能因为你的没分配内存,而变回不可变的类型吧。。(个人这样理解)

这是我在写代码时候用到的,但是就解决不了问题,问了很多人,才解决的



我的代码用到的可变数组。问题就是不可变数组负值给了可变数组

@property (strong,nonatomic)NSMutableArray *weatherDic; //声明是可变数组,在用的时候就是不可变的额

我这里是这么写的。

_weatherDic = [NSJSONSerializationJSONObjectWithData:data
options:NSJSONReadingMutableLeaveserror:&Eerror]; //这里是给他负值的

//这里是要用到他的

[_weatherDicremoveObjectAtIndex:indexPath.row];//删除选择行的数组元素

[tableView
deleteRowsAtIndexPaths:[NSMutableArrayarrayWithObject:indexPath]

然而,这里一直报错。。



Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable
object'



翻译:“NSInternalInconsistencyException”终止应用程序由于未捕获异常,原因:“——(__NSCFArray removeObjectAtIndex:]:变异方法发送到不可变的对象”



可是就是这里一直找不到为什么,我也没有定义其他的数组啊,我定义的是一个可变数组啊,我就纳闷了,试了好久 ,就是解决不了,然后问了别人,他给我说这是可变数组哪里发生了变化导致的。

然后他就给我指导了,我就进行了更改,代码如下,(其实就是先把内容放到不可变数组中,然后吧不可变数组转化为可变数组的原理)



NSArray *array= [NSJSONSerializationJSONObjectWithData:data
options:NSJSONReadingMutableLeaveserror:&Eerror];

_weatherDic=[NSMutableArrayarrayWithArray:array];



注:_weatherDic 这是一个可变数组的变量定义

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐