A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© godlike 中级黑马   /  2014-5-14 13:27  /  6698 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 godlike 于 2014-5-15 15:53 编辑

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

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

5 个回复

倒序浏览
这个还不清楚。。。还没怎么学OC呢
回复 使用道具 举报
     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];

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报 1 0
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";  // 取出来改也报错
难道说这个不可变数组就是不仅个数不能变,里边的值也不能重新改;
回复 使用道具 举报
godlike 发表于 2014-5-15 11:04
感谢你如此细致的回答;
那么如果我定义了一个数组:NSArray *array = @[@"hello", @"world"];我想把其中 ...

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

不客气,有问题大家一起探讨。一旦用NsArray 定义了数组,里面是啥就是啥,不能改。NsArray 的子类NsMutableArray定义的数组可以改。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马