佚名通过本文主要向大家介绍了oc是什么元素,oc,oc兼职网,oc兼职网上海,oc是什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:二维数组 OC二维数组替换元素的问题?
描述:
解决方案1:
描述:
求教个新手问题
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] aaaaa
2016-09-17 21:53:55.160 Test[3124:369229] 替换的元素内容
2016-09-17 21:53:55.160 Test[3124:369229] cccccc
2016-09-17 21:53:55.160 Test[3124:369229] dddddd
2016-09-17 21:53:55.160 Test[3124:369229] eeeeee
Program ended with exit code: 0