1.不可变数组(NSArray)的操作

1.1.不可变数组的声明,不可变数组生命有很多方式,这里只有最基本的一种

// 声明一个数组
// 数组的元素可以是任意的对象
// 数组中装的是对象的地址
NSArray * array = [[[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil] autorelease];

 1.2.直接打印数组,会将数组的元素都打印出来

// 声明一个数组
// 数组的元素可以是任意的对象
// 数组中装的是对象的地址
NSArray * array = [[[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil] autorelease];// 数组的遍历
// 直接打印数组的时候,会将数组的每个元素都打印出来,在数组类中重写了description方法,%@打印对象,就会获得description方法的返回值
NSLog(@"my array is %@",array);

 1.3.数组的遍历

1.3.1.枚举器法遍历数组

NSEnumerator * enumerator = [array objectEnumerator];
id obj;
while(obj = [enumerator nextObject]){NSLog(@"枚举器法进行数组的遍历:%@",obj);
}

    1.3.2.foreach遍历

for(id obj in array){NSLog(@"foreach遍历数组元素是 :%@",obj);
}

    1.3.3.for遍历

for(int i = 0; i < [array count];i++){NSLog(@"for方法返回的数组元素是:%@",[array objectAtIndex:i]);
}

2.可变数组(NSMutableArray)的操作,可变数组是不可变数组的子类,所以可变数组可以使用不可变数组的方法

2.1.向可变数组中添加元素

NSMutableArray *mutableArray = [[[NSMutableArray alloc] init] autorelease];
[mutableArray addObject:@"haha"];
[mutableArray addObject:@"hoho"];
[mutableArray addObject:@"nienie"];
NSLog(@"mutableArray is %@",mutableArray);

 2.2.删除元素 使用remove的一系列方法

[mutableArray removeObject:@"hoho"]; // 根据内容删除数组对象
[mutableArray removeObjectAtIndex:0]; // 根据数组下标删除对象
NSLog(@"删除后mutableArray is %@",mutableArray);

2.3.交换两个数组元素的位置

[mutableArray exchangeObjectAtIndex:0 withObjectAtIndex:1];
NSLog(@"交换位置后的mutableArray is %@",mutableArray);

 2.4.可变数组的遍历,其他和NSArray一致

2.4.1.在枚举器法正序遍历和foreach方法遍历数组中,不能去改变这个数组中元素的值,但是在可变数组的逆序遍历中可以修改可变数组中的元素

NSMutableArray  *testMutableAray = [[[NSMutableArray alloc] init] autorelease];
[testMutableAray addObject:@"张三"];
[testMutableAray addObject:@"李四"];
[testMutableAray addObject:@"王五"];
[testMutableAray addObject:@"赵六"];NSEnumerator * myenumerator = [testMutableAray reverseObjectEnumerator];NSString *str;while (str = [myenumerator nextObject]) {[testMutableAray removeLastObject];
}
NSLog(@"%@",testMutableAray);

3.字符串和数组之间的转化

3.1.将字符串分割成数组

NSString * mySubstr = @"I am a poor man";
NSLog(@"原始的字符串是:%@",mySubstr);
NSArray * mySubArray = [mySubstr componentsSeparatedByString:@" "];
NSLog(@"分割后的数组是:%@",mySubArray);

     3.2.将数组拼接成字符串

// 将数组拼接成字符串
// 方法1.
NSEnumerator * mySubEnumerator = [mySubArray reverseObjectEnumerator];
NSMutableArray * subMutableArray = [[[NSMutableArray alloc] init] autorelease];
id subObj;
while (subObj = [mySubEnumerator nextObject]) {[subMutableArray addObject:subObj];NSLog(@"逆序后遍历的字符串是:%@",subObj);
}// 方法2
// componentsJoinedByString后面的“--”是字符串之间的连接符
NSString * joinedStr = [subMutableArray componentsJoinedByString:@"--"];
NSLog(@"拼接之后生成的新的数组是:%@",joinedStr);

  

转载于:https://www.cnblogs.com/zwhFighting/p/4550783.html

NSArray和NSMutableArray相关推荐

  1. OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

    一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化 ...

  2. NSArray、NSMutableArray和NSMutableDictionary的用法

    转自:http://www.cnblogs.com/wangpei/admin/EditPosts.aspx?opt=1 NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向一段内存区域 ...

  3. iOS开发中对NSArray或者NSMutableArray中的内容排序

    原文引用至               http://blog.unieagle.net/2012/05/10/ios开发中对nsarray或者nsmutablearray中的内容排序/ NSMuta ...

  4. iOS NSArray 、NSMutableArray原理揭露

    在iOS开发中,我们在非常非常多的地方用到了数组.而关于数组,有很多需要注意和优化的细节,需要我们潜入到下面,去了解. 阅读<Effective Objective-C 2.0>的原版的时 ...

  5. NSArray 与 NSMutableArray 的排序

    由于集合的使用过程中,经常需要对数组进行排序操作,此博客用于总结对在OC中对数组排序的几种方法 1.当数组中存放的是Foundation框架中提供的对象时,直接使用 compare:方法 如:NSSt ...

  6. NSArray和NSMutableArray对象的使用

    /* 初始化方法:     1.init返回一个空数组      2.initWithArray从已有数组初始化      3.initWithContentsOfFile//从plist文件加载   ...

  7. IOS学习笔记十九NSArray和NSMutableArray

    1.NSArray NSArray不可变集合,不能添加新元素和删除已有元素和替换元素 2.demo Dog.h #import <Foundation/Foundation.h> #ifn ...

  8. Foundation框架集合 ---- NSArray和NSMutableArray

    (1).NSArray :OC中使用的数组,是面向对象,并且是不可变数组. 1.1OC数组不能存放nil值,只能存放OC对象.不能存放非OC对象类型,比如int.strcut.enum等: 1.2 C ...

  9. NSArray和NSMutableArray的常用方法

    /* 初始化方法:     1.init返回一个空数组      2.initWithArray从已有数组初始化      3.initWithContentsOfFile//从plist文件加载   ...

最新文章

  1. 梦回93年,32岁的Yann LeCun在展示他的卷积网络...
  2. 31 道 Java 核心面试题,统统打包给你!
  3. 医宗金鉴自学指南_自学《医宗金鉴》能学会中医吗?
  4. 基于SpringBoot +Vue+ ElementUI 开发的多用户博客管理平台,就是这么简单!
  5. .net 学习 报错 Invalid temp directory in chart handler configuration [c:\TempImageFiles\]
  6. 如何在本地运行查看github上的开源项目
  7. 永洪Desktop自由表格间计算使用教程
  8. 向预训练进一步:掩码式非自回归模型训练
  9. word表格图片自动适应表格大小_几招教你快速解决word文字、图片、表格排版问题,你肯定遇到过...
  10. 后台接收datetime_input上传date日期时间数据到后台报400怎么办?
  11. 从莱布尼茨到扎克伯格:算法和它许诺的美丽新世界
  12. python如何删除对象属性_如何优雅的删除对象中的指定属性?
  13. 【译】UI设计基础(UI Design Basics)--启动与停止(Starting and Stopping)(五)
  14. 20145321 实验三实验报告
  15. 常见的HTTP状态码大全
  16. ubuntu下交叉编译libyuv到RK3399平台(ARM64)((提高YUV图像转换效率)
  17. 提升幸福感的100件小事
  18. 关于开发板不断eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 eth0: link down的问题
  19. 实战录 | 云端卫士之DPDK技术简介
  20. 2020大疆秋招笔试题B卷

热门文章

  1. (转载)OC学习篇之---KVC和KVO操作
  2. 22.调用element方法控制dom元素
  3. java_web学习(8)会话与状态管
  4. 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法
  5. c# asp.net Pdf 转换图片 在线预览 发布到iis中问题 最终解决篇—_—!
  6. TP5 封装多业务的发送短信功能(包括国际短信)
  7. java 通信 教程_Java实现简单的socket通信教程
  8. POJ1149 PIGS(最大流)
  9. 【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )
  10. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )