我希望不需要在这里使用NSMutableArray。我有一个包含10个元素的数组。我想改变索引4的值。有没有办法做到这一点,而不必使用NSMutableArray? NSMutableArray的问题是我们可以改变它的任何内容,包括它的大小。我不希望这个数组的大小发生意外更改。我只想将索引4中的值从22改为25.我该怎么做?做array[4]=25
不起作用。在NSArray的特定索引更新值
2
A
回答
8
NSArray *ar1 = @[@"1",@"2"];
NSMutableArray *ar1update = [ar1 mutableCopy];
ar1update[1] = @"Changed";
ar1 = [NSArray arrayWithArray:ar1update];
0
唯一的方法是创建一个新的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个项目。
0
如果你不想使用NSMutableArray
那么一个普通的旧C数组呢?例如:
int array[10];
...
array[4] = 25;
您可以将Objective-C对象存储在这样的数组中,ARC将处理内存管理。
如果你真的想要一个固定大小的NSArray
/NSMutableArray
你可以做,通过继承这些类型的自己 - 继承NSArray
只需要实现两个方法,你可以使用底层C数组或NSMutableArray
的实际存储。
HTH
相关问题
- 1. NSArray找到值的索引
- 2. 更新文件(在特定的索引更新数组属性)
- 3. 字典数组/如何更新特定键和索引的值?
- 4. 搜索列表和更新在该特定索引
- 5. NSArray返回特定值
- 6. 查找NSArray/NSMutableArray更改的索引
- 7. 更新一个特定的数组索引在蒙戈
- 8. 在特定值上生成索引
- 9. 如何从nsarray的nsarray中搜索特定的联系人
- 10. python中的特定行的索引值
- 11. 如何从NSArray访问索引值
- 12. 的iOS NSArray的索引
- 13. 查找特定值的列索引
- 14. 获取特定索引的不同值
- 15. 笨更新特定值
- 16. 更新一个或多个特定产品的Magento索引
- 17. 如何更新jQuery中每个函数的特定索引?
- 18. 如何更新Elasticsearch索引中的特定字段?
- 19. 上更新的唯一索引值
- 20. 字符串更改特定的索引值相同蟒蛇
- 21. jQuery如何更改特定索引列中文本框的值?
- 22. IOS目标C - 从另一个更新的NSArray值的NSArray
- 23. 在特定索引处搜索数组的值... Pt。 2纠错
- 24. 如何在特定索引
- 25. 在Ruby中更新特定值
- 26. NSArray的平均值和商店价值在一个新的NSArray
- 27. 如何在android中更新值更新的特定行
- 28. 索引未知时更新特定数组条目
- 29. 通过特定索引更新数组对象
- 30. 如何检索和更新Firebase中的特定值
您不能更改不可变数组。所以是的,至少暂时需要一个可变数组。 – rmaddy
当然,如果对象本身是可变的,你可以改变从数组中寻址的**对象**的值。 –