Maison > Questions et réponses > le corps du texte
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 ?
迷茫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:@[...]];
高洛峰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