与NSMutableArray相比,我可以修改NSArray中的数据吗?

时间:2013-02-07 14:46:12

标签: ios nsmutablearray nsarray

我发现了很多关于NSMutableArray vs NSArray的讨论。 它非常有趣,我知道您无法在NSArray中添加或删除对象

但是可以更改NSArray中的对象吗?

我的意思是,如果我有NSArray NSNumber,我可以更改NSNumber中的NSArray,还是应该使用NSMutableArray能够修改NSArray

中对象的值

1 个答案:

答案 0 :(得分:7)

NSArray不允许您交换元素(也不会追加或删除它们)。如果您有NSArray可变对象,请说NSMutableString,您可以在不更改数组的情况下修改对象。

由于Cocoa不包含NSNumber的可变变体,但你不能用数字对象做到这一点。

示例:

// immutable array, immutable elements: no way to change anything.
NSArray *array1 = @[@1, @2, @3];

// immutable array of mutable elements:
NSArray *array2 = @[[@"1" mutableCopy], [@"2" mutableCopy], [@"3" mutableCopy]];
NSLog(@"Step 1: %@", array2); // prints "1, 2, 3"

// now we change one of the elements of the immutable array:
[array2[0] appendString:@".1"];
NSLog(@"Step 2: %@", array2); // prints "1.1, 2, 3"

长话短说:

  

我可以修改NSArray中的数据吗?