更新 NSArray 中特定索引处的值
update value at specific index in NSArray
我希望在这里不需要使用 NSMutableArray。我有一个包含 10 个元素的数组。我想更改索引 4 处的值。有没有一种方法可以在不必使用 NSMutableArray 的情况下执行此操作? NSMutableArray 的问题是我们可以改变它的任何东西,包括它的大小。我不希望这个数组的大小意外改变。我只想将索引 4 处的值从 22 更改为 25。我该怎么做?做 array[4]=25
是行不通的。
NSArray *ar1 = @[@"1",@"2"];
NSMutableArray *ar1update = [ar1 mutableCopy];
ar1update[1] = @"Changed";
ar1 = [NSArray arrayWithArray:ar1update];
唯一的方法是创建一个新的 NSArray 并将指针更改为新的 NSArray。我可以举个例子...
在界面中:
@property (strong, nonatomic) NSArray *myArray;
实施中:
- (void) updateMyArray{
NSMutableArray *myArrayMut = [self.myArray mutableCopy];
myArrayMut[4] = @"new item";
self.myArray = [myArrayMut copy];
}
所以基本上,您可以临时创建一个可变副本,进行所需的更改,然后制作一个不可变副本。获得不可变副本后,您可以将 myArray 指向新副本。只要您仅更改 updateMyArray
中的现有项目并且 myArray 开始时包含 10 个或更少的项目,您将永远无法拥有超过 10 个项目。
如果您不想使用 NSMutableArray
普通的旧 C 数组怎么样?例如:
int array[10];
...
array[4] = 25;
您可以在这样的数组中存储 Objective-C 个对象,ARC 将处理内存管理。
如果你真的想要一个固定大小的 NSArray
/NSMutableArray
你可以通过自己对这些类型进行子类化来实现 - 子类化 NSArray
只需要实现两个方法,你可以使用一个底层 C 数组或 NSMutableArray
用于实际存储。
HTH
我希望在这里不需要使用 NSMutableArray。我有一个包含 10 个元素的数组。我想更改索引 4 处的值。有没有一种方法可以在不必使用 NSMutableArray 的情况下执行此操作? NSMutableArray 的问题是我们可以改变它的任何东西,包括它的大小。我不希望这个数组的大小意外改变。我只想将索引 4 处的值从 22 更改为 25。我该怎么做?做 array[4]=25
是行不通的。
NSArray *ar1 = @[@"1",@"2"];
NSMutableArray *ar1update = [ar1 mutableCopy];
ar1update[1] = @"Changed";
ar1 = [NSArray arrayWithArray:ar1update];
唯一的方法是创建一个新的 NSArray 并将指针更改为新的 NSArray。我可以举个例子...
在界面中:
@property (strong, nonatomic) NSArray *myArray;
实施中:
- (void) updateMyArray{
NSMutableArray *myArrayMut = [self.myArray mutableCopy];
myArrayMut[4] = @"new item";
self.myArray = [myArrayMut copy];
}
所以基本上,您可以临时创建一个可变副本,进行所需的更改,然后制作一个不可变副本。获得不可变副本后,您可以将 myArray 指向新副本。只要您仅更改 updateMyArray
中的现有项目并且 myArray 开始时包含 10 个或更少的项目,您将永远无法拥有超过 10 个项目。
如果您不想使用 NSMutableArray
普通的旧 C 数组怎么样?例如:
int array[10];
...
array[4] = 25;
您可以在这样的数组中存储 Objective-C 个对象,ARC 将处理内存管理。
如果你真的想要一个固定大小的 NSArray
/NSMutableArray
你可以通过自己对这些类型进行子类化来实现 - 子类化 NSArray
只需要实现两个方法,你可以使用一个底层 C 数组或 NSMutableArray
用于实际存储。
HTH