美文网首页
iOS创建可变数组,却报错它是不可变数组的bug

iOS创建可变数组,却报错它是不可变数组的bug

作者: plantseeds | 来源:发表于2016-07-19 11:33 被阅读535次

    给返回的网络数据赋值时发现一个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]];
    }
    

    相关文章

      网友评论

          本文标题:iOS创建可变数组,却报错它是不可变数组的bug

          本文链接:https://www.haomeiwen.com/subject/jyumjttx.html