黑马程序员技术交流社区

标题: NSArray能重新赋值吗 [打印本页]

作者: godlike    时间: 2014-5-14 13:27
标题: NSArray能重新赋值吗
本帖最后由 godlike 于 2014-5-15 15:53 编辑

NSArray是不可变数组,但是能不能像c语言中的数组一样,修改其中某个元素的值,有的话是那个方法;

作者: Sniper_YJ    时间: 2014-5-15 01:46
这个还不清楚。。。还没怎么学OC呢
作者: wanzhu159    时间: 2014-5-15 10:48
     NsArray数组只能装oc对象 ,不能存储c语言中的基本数据类型像int,double等,也不可以为空值,空值代表数据结束,一旦往这个数组里面添加元素就不可变。
      但是有其他方法可以间接添加删除里面的元素。方法如下
添加
       1、先创建一个 NsArray数组并赋值
NsArray *array1 =[ NsArray arryWithObjects@"1",@"2",nil];
      2、用 arryByAddingObjectFromArry:[]方法往array1里面添加新的元素,并重新生成数组array2.
NsArray *array2 =[array1  arryByAddingObject:@“3”];
      3、另外一种添加方法,把另外一个数组的元素添加进去。
NsArray *array4 =[array1  arryByAddingObjectFromArry:[ NsArray arryWithObjects@"4",@"5"]];
删除:  
就是截取出数据中的某几个元素
NsArry arry3=[ NsArray arryWithObjects@"7",@"8",@"9"nil];
NsRang range =NsMakeRage(1,2);//在数组中的位置1和范围2,也就是取出8和9。
NsArry *arry6 = [arry3 subarrayWithRang:range];


作者: godlike    时间: 2014-5-15 11:04
wanzhu159 发表于 2014-5-15 10:48
NsArray数组只能装oc对象 ,不能存储c语言中的基本数据类型像int,double等,也不可以为空值,空值代 ...

感谢你如此细致的回答;
那么如果我定义了一个数组:NSArray *array = @[@"hello", @"world"];我想把其中的hello改为"hi",不重新定义数组,如何做到;
array[0] = @"hi"; // 像c语言数组那样去改,报错
[array objectAtIndex:0] = @"hi";  // 取出来改也报错
难道说这个不可变数组就是不仅个数不能变,里边的值也不能重新改;
作者: 一只小菜鸟    时间: 2014-5-15 11:49
godlike 发表于 2014-5-15 11:04
感谢你如此细致的回答;
那么如果我定义了一个数组:NSArray *array = @[@"hello", @"world"];我想把其中 ...

不可变 不可变。。。。。。。说的这么明显了
就像NSString一样,你只能重新指向其他对象
如:NSString *str1 = @"1"; str2 = @"2",@"2"
另外,报错的原因不是说NSArray中的元素没有write这个方法么。
//PS:注意看报错原因
作者: wanzhu159    时间: 2014-5-15 12:14
godlike 发表于 2014-5-15 11:04
感谢你如此细致的回答;
那么如果我定义了一个数组:NSArray *array = @[@"hello", @"world"];我想把其中 ...

不客气,有问题大家一起探讨。一旦用NsArray 定义了数组,里面是啥就是啥,不能改。NsArray 的子类NsMutableArray定义的数组可以改。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2