关于可变数组的一点小知识_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 关于可变数组的一点小知识

关于可变数组的一点小知识

 2015/1/5 17:32:25  _freedom_yl  程序员俱乐部  我要评论(0)
  • 摘要:最近在使用iOS的可变数组时出现了一个错误,报错信息为:reason:'-[__NSCFArrayremoveObjectAtIndex:]:mutatingmethodsenttoimmutableobject'字面的意思就是可变数组的方法发送给了一个不可变的对象。声明和初始化的代码如下://声明NSMutableArray*dataArray;//初始化dataArray=[NSMutableArrayarray];通过分析dataArray,发现只有在向服务器请求数据后
  • 标签:数组

最近在使用iOS的可变数组时出现了一个错误,报错信息为:

reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'

字面的意思就是可变数组的方法发送给了一个不可变的对象。

声明和初始化的代码如下:

//声明
NSMutableArray *dataArray;


//初始化
dataArray = [NSMutableArray array];

通过分析dataArray,发现只有在向服务器请求数据后,对dataArray进行了赋值,想来问题就是应该出现这里了。

[manager POST:requestUrl
       parameters:jsonDictionary
          success:^(AFHTTPRequestOperation *operation, id responseObject) {
              NSLog(@"json: %@", responseObject);
              
              dataArray = responseObject;
              
              [self.tableView reloadData];
              
          } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
              NSLog(@"%@", error);
              
              
          }];

所以问题应该是responseObject这个返回值是一个不可变的数组,在赋值后,dataArray也变成了不可变的数组。

如果想继续使用,做些处理就可以了,例如:

dataArray = [NSMutableArray arrayWithArray:dataArray];

 

 

参考:http://stackoverflow.com/questions/22381384/ios-error-nscfarray-removeobjectatindex-mutating-method-sent-to-immutable

发表评论
用户名: 匿名