recherche

Maison  >  Questions et réponses  >  le corps du texte

Un problème avec le remplacement d'éléments dans un tableau bidimensionnel OC ?

J'ai une question pour un débutant

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

Ensuite, je veux remplacer l'élément par l'index 1

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

Lorsque j'utilise cette méthode pour remplacer (modifier) ​​l'élément 1, j'obtiens toujours une erreur. Comment puis-je résoudre ce problème ?

大家讲道理大家讲道理2835 Il y a quelques jours931

répondre à tous(2)je répondrai

  • 迷茫

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

    @[] ne peut générer que des tableaux immuables, c'est-à-dire NSArray, et replaceObjectAtIndex est une méthode uniquement disponible pour NSMutableArray.
    Appelez simplement @[...] après votre mutableCopy.

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

    répondre
    0
  • 高洛峰

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

    Point de connaissance Convertir NSArray en NSMutableArray Si votre _dataArray est NSMutableArray, vous devez d'abord ouvrir de l'espace. Vous pouvez uniquement le déclarer comme NSArray puis le convertir en

     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] Contenu de l'élément remplacé
    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
    Programme terminé avec le code de sortie : 0

    répondre
    0
  • Annulerrépondre