编辑NSMutableArray的内容,其名称存储在NSString的内容中

时间:2015-01-29 13:48:40

标签: ios arrays nsstring nsmutablearray

我有一个函数在参数中接受NSString变量,并在末尾附加Array,它给出了已在类中定义的数组的名称。 我该如何编辑该数组呢?

-(void) editArray:(NSString*)str{ //suppose str value is first 

NSString* myArrayName = [str stringByAppendingString:@"Array"]; //firstArray  

myArrayName包含已在类中定义的NSMutableArray的名称。如何访问此数组并编辑它的值?

NSMutableArray *myArray=[self valueForKey:myArrayName]; //suppose myArrayName is equal to @"firstArray"

上述技术不起作用,因为它将firstArray的内容复制到myArray,如果我更改myArray的内容,它不会影响firstArray

2 个答案:

答案 0 :(得分:2)

使一个nsarray *数组分配它并在其中添加您的值。 然后通过方法addValuesFromArray从参考数组中的数组添加值。

不要分配你的参考数组,因为它会失去先前的参考。

答案 1 :(得分:1)

实际上,你错了。如果您的类实例的属性(或iVar)为NSMutableArray(正如您所说的那样' firstArray'),并且在您调用

时进行了实例化
NSMutableArray *myArray=[self valueForKey:myArrayName];

myArray ,您定义的变量 firstArray 将引用相同的 NSMutableArray对象。 因此,如果之后您更改了myArray的内容(例如[myArray removeLastObject]),myArray和firstArray仍将引用相同的数组对象(现在将包含objectsCount-1。)

因此,如果您为myArray分配另一个对象并且期望firstArray也将引用此对象,则可能会出错:

NSMutableArray *myArray=[self valueForKey:myArrayName]; //firstArray and myArray becomes equal
myArray = [NSMutableArray arrayWithArray:anotherArray]; //firstArray and myArray not equal anymore!