objective-c - OC二维数组替换元素的问题?

浏览:38日期:2023-11-24

问题描述

求教个新手问题

NSMutableArray *_dataArray; _dataArray=@[ @[@'Image_f',@'aaaaaa'], @[@'Image_h',@'bbbbbb'], @[@'Image_r',@'cccccc'], @[@'Image_s',@'dddddd'], @[@'Image_r',@'eeeeee']];

然后我想要替换 索引为 1的元素

NSArray *rpArr = [NSArray arrayWithObjects:@'ggggg_hhhh',@'替换的元素内容', nil]; [_dataArray replaceObjectAtIndex:1 withObject:rpArr];

我用这种方式 替换(修改)元素1的时候 老是报错 这个咋整

问题解答

回答1:

@[] 只能生成不可变的数组,即 NSArray,而 replaceObjectAtIndex 是 NSMutableArray 才有的方法。在你的 @[...]后面调用下 mutableCopy 就好了。

NSMutableArray *_dataArray = @[...].mutableCopy;[_dataArray replaceObjectAtIndex:1 withObject:@[...]];回答2:

知识点NSArray转NSMutableArray.你的_dataArray如果是NSMutableArray应该先开辟空间啊。你这种只能声明成NSArray,然后转

NSArray* _dataInitArray = @[ @[@'Image_f',@'aaaaa'], @[@'Image_h',@'bbbbbb'], @[@'Image_r',@'cccccc'], @[@'Image_s',@'dddddd'], @[@'Image_r',@'eeeeee'] ];NSMutableArray * _dataArray = [_dataInitArray mutableCopy];NSArray *rpArr = [NSArray arrayWithObjects:@'ggggg_hhhh',@'替换的元素内容', nil];[_dataArray replaceObjectAtIndex:1 withObject:rpArr];for(int i = 0 ; i < 5; i++){ NSLog(@'%@',_dataArray[i][1]);}

2016-09-17 21:53:55.159 Test[3124:369229] aaaaa2016-09-17 21:53:55.160 Test[3124:369229] 替换的元素内容2016-09-17 21:53:55.160 Test[3124:369229] cccccc2016-09-17 21:53:55.160 Test[3124:369229] dddddd2016-09-17 21:53:55.160 Test[3124:369229] eeeeeeProgram ended with exit code: 0

相关文章: