cari

Rumah  >  Soal Jawab  >  teks badan

Masalah dengan menggantikan elemen dalam tatasusunan dua dimensi OC?

Saya ada soalan untuk newbie

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

Kemudian saya mahu menggantikan elemen dengan indeks 1

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

Apabila saya menggunakan kaedah ini untuk menggantikan (ubah suai) elemen 1, saya sentiasa mendapat ralat. Bagaimana saya boleh membetulkannya?

大家讲道理大家讲道理2796 hari yang lalu890

membalas semua(2)saya akan balas

  • 迷茫

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

    @[] hanya boleh menjana tatasusunan tidak berubah, iaitu NSArray dan replaceObjectAtIndex ialah kaedah yang hanya tersedia untuk NSMutableArray.
    Panggil sahaja @[...] selepas mutableCopy anda.

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

    balas
    0
  • 高洛峰

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

    Titik pengetahuan Tukar NSArray kepada NSMutableArray Jika _dataArray anda ialah NSMutableArray, anda harus membuka ruang terlebih dahulu. Anda hanya boleh mengisytiharkannya sebagai NSArray dan kemudian menukarnya kepada

     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 Ujian[3124:369229] aaaaa
    2016-09-17 21:53:55.160 Ujian[3124:369229] Menggantikan kandungan elemen
    2<🎜 21:53:55.160 Ujian[3124:369229] cccccc
    2016-09-17 21:53:55.160 Ujian[3124:369229] dddddd
    2016-09-17:53:160 ]eeeeee
    Program berakhir dengan kod keluar: 0

    balas
    0
  • Batalbalas