给返回的网络数据赋值时发现一个bug,
创建对象
_imgUrls = [NSMutableArray new];
rsp[@"imgurl"] 是网络返回数据,为数组格式,于是我在返回数据后这样赋值
self.imgUrls = rsp[@"imgurl"];
再调用
[self.imgUrls removeObjectAtIndex:] ,
结果报错:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'
说这是一个不可变的self.imgUrls数组, 然而 我创建self.imgUrls的时候,的确是用 [NSMutableArray new]创建的
真正的原因是:
在赋值 self.imgUrls = rsp[@"imgurl"] 的时候, 是把一个不可变数组赋值给一个可变数组,所以即使声明了NSMutableArray可变,也没用!
我这样解决:
先声明另外一个数组 arr = rsp[@"imgurl"],然后遍历它,给self.imgUrls赋值
NSMutableArray *arr = rsp[@"imgurl"];
for (int i = 0; i < arr.count; i++) {
[self.imgUrls addObject:arr[i]];
}
网友评论