编辑 NSMutableArray 的内容,谁的名字存储在 NSString 的内容中
Edit contents of NSMutableArray who's name is stored in contents of NSString
我有一个函数,它在参数中接受 NSString 变量,并在末尾附加 Array,为它提供已在 class 中定义的数组名称。
我该如何编辑该数组?
-(void) editArray:(NSString*)str{ //suppose str value is first
NSString* myArrayName = [str stringByAppendingString:@"Array"]; //firstArray
myArrayName 包含已在 class 中定义的 NSMutableArray 的名称。我如何访问此数组并编辑它的值?
NSMutableArray *myArray=[self valueForKey:myArrayName]; //suppose myArrayName is equal to @"firstArray"
上述技术不起作用,因为它将 firstArray 的内容复制到 myArray,如果我更改 myArray 的内容,它不会影响 firstArray
其实,你错了。如果您的 class 实例具有 NSMutableArray
的 属性(或 iVar)(正如您所说的 'firstArray'),并且在您调用
时实例化了
NSMutableArray *myArray=[self valueForKey:myArrayName];
myArray 和您定义的变量 firstArray 将引用 same 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!
制作一个 nsarray *array alloc 并在其中添加您的值。
然后通过方法 addValuesFromArray
从引用数组中的数组添加值。
不要分配您的引用数组,因为它会丢失以前的引用。
我有一个函数,它在参数中接受 NSString 变量,并在末尾附加 Array,为它提供已在 class 中定义的数组名称。 我该如何编辑该数组?
-(void) editArray:(NSString*)str{ //suppose str value is first
NSString* myArrayName = [str stringByAppendingString:@"Array"]; //firstArray
myArrayName 包含已在 class 中定义的 NSMutableArray 的名称。我如何访问此数组并编辑它的值?
NSMutableArray *myArray=[self valueForKey:myArrayName]; //suppose myArrayName is equal to @"firstArray"
上述技术不起作用,因为它将 firstArray 的内容复制到 myArray,如果我更改 myArray 的内容,它不会影响 firstArray
其实,你错了。如果您的 class 实例具有 NSMutableArray
的 属性(或 iVar)(正如您所说的 'firstArray'),并且在您调用
NSMutableArray *myArray=[self valueForKey:myArrayName];
myArray 和您定义的变量 firstArray 将引用 same 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!
制作一个 nsarray *array alloc 并在其中添加您的值。
然后通过方法 addValuesFromArray
从引用数组中的数组添加值。
不要分配您的引用数组,因为它会丢失以前的引用。