搜尋

首頁  >  問答  >  主體

objective-c - OC二維陣列取代元素的問題?

求教個新手問題

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的時候 老是報錯 這個咋整

大家讲道理大家讲道理2771 天前874

全部回覆(2)我來回復

  • 迷茫

    迷茫2017-05-02 09:32:09

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

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

    回覆
    0
  • 高洛峰

    高洛峰2017-05-02 09:32:09

    知識點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] 替換的元素內容Test[3124:369229] cccccc
    2016-09-17 21:53:55.160 Test[3124:369229] 1dd
    2016-09-17 21:53:55.160 0

    回覆
    0
  • 取消回覆