我的OC成长之路(复习之数组)

注意:

1.因为数组和字典中存放的只能是对象类型. 所以一般的数值是不能直接存入的, 只能转化成对象元素才能存入!

2.

NSArray 用于对象有序集合

NSSet 用于对象无序集合

NSDictionary 用于键值映射

3.数组中所有元素不能是基本数据类型,否则会编译报错,如果有需要封装成NSNumber类或NSValue类。

4.数组在NSLog中可以作为对象直接输出,此时建议重写NSObject的-(NSString *)description方法.

5.数组中可以存储自定义类的对象,此时建议重写NSObject的-(BOOL)isEqual:(id)object方法

一、NSArray

1.功能

NSArray* array = [NSArray arrayWithObjects:
			@"abcde", @"fghij"
			, @"klmno", @"pqrst"
			, @"uvwxy" , nil];
NSLog(@"第一个元素:%@" , [array objectAtIndex:0]);
NSLog(@"索引为1的元素:%@" , [array objectAtIndex:1]);
NSLog(@"最后一个元素:%@" , [array lastObject]);
// 1.获取索引从2~5的元素组成的新集合
NSArray* arr1 = [array objectsAtIndexes: [NSIndexSet
			indexSetWithIndexesInRange:NSMakeRange(2, 3)]];
NSLog(@"%@" , arr1);
// 2.获取元素在集合中的位置
NSLog(@"klmno的位置为:%ld" ,
			[array indexOfObject:@"klmno"]);
// 3.获取元素在集合的指定范围中的位置
NSLog(@"在2~5范围pqrst的位置为:%ld" ,
			[array indexOfObject:@"pqrst"
			inRange:NSMakeRange(2, 3)]);  // ①
// 4.向数组的最后追加一个元素。
// 原NSArray本身并没有改变,只是将新返回的NSArray赋给array
array = [array arrayByAddingObject:@"zzzzz"];
// 5.向array数组的最后追加另一个数组的所有元素。
// 原NSArray本身并没有改变,只是将新返回的NSArray赋给array
array = [array arrayByAddingObjectsFromArray:
			[NSArray arrayWithObjects:@"aaaaa" , @"bbbbb" , nil]];
for (int i = 0 ; i < array.count; i++)
{
//NSLog(@"%@" , [array objectAtIndex:i]);
// 上面代码也可简写为如下代码
NSLog(@"%@" , array[i]);
}
// 6.获取array数组中索引为5~8处的所有元素
NSArray* arr2 = [array subarrayWithRange: NSMakeRange(5, 3)];
// 7.将NSArray集合的元素写入文件
[arr2 writeToFile:@"myFile.txt" atomically:YES];

2.for in 快速枚举

// 读取前面写入磁盘的文件,用文件内容来初始化NSArray集合
NSArray* array = [NSArray arrayWithContentsOfFile:@"myFile.txt"];
for(id object in array)
{
  NSLog(@"%@" , object);
}

二、NSMutableArray

// 定义一个函数,该函数用于把NSArray集合转换为字符串
NSString* NSCollectionToString(NSArray* array)
{
	NSMutableString* result = [NSMutableString stringWithString:@"["];
	for(id obj in array)
	{
		[result appendString:[obj description]];
		[result appendString:@", "];
	}
	// 获取字符串长度
	NSUInteger len = [result length];
	// 去掉字符串最后的两个字符
	[result deleteCharactersInRange:NSMakeRange(len - 2, 2)];
	[result appendString:@"]"];
	return result;
}
int main(int argc , char * argv[])
{
	@autoreleasepool{
		// 读取前面写入磁盘的文件,用文件内容来初始化NSMutableArray集合
		NSMutableArray* array = [NSMutableArray arrayWithContentsOfFile:@"myFile.txt"];
		// 向集合最后添加一个元素
		[array addObject:@"abc"];
		NSLog(@"最后追加一个元素后:%@" , NSCollectionToString(array));
		// 使用NSArray向集合尾部添加多个元素
		[array addObjectsFromArray: [NSArray arrayWithObjects:@"张飞" , @"关羽",nil]];
		NSLog(@"最后追加两个元素后:%@" , NSCollectionToString(array));
		// 向集合的指定位置插入一个元素
		[array insertObject:@"bcd" atIndex:2];
		NSLog(@"在索引为2处插入一个元素后:%@" , NSCollectionToString(array));
		// 使用NSArray向集合指定位置插入多个元素
		[array insertObjects: [NSArray
			 arrayWithObjects:@"武松" , @"林冲",nil]
			 atIndexes:[NSIndexSet indexSetWithIndexesInRange
			 :NSMakeRange(3,2)]];
		NSLog(@"插入多个元素后:%@" , NSCollectionToString(array));
		// 删除集合最后一个元素
		[array removeLastObject];
		NSLog(@"删除最后一个元素后:%@" , NSCollectionToString(array));
		// 删除集合中指定索引处的元素
		[array removeObjectAtIndex:5];
		NSLog(@"删除索引为5处的元素后:%@" , NSCollectionToString(array));
		// 删除2~5处元素
		[array removeObjectsInRange:NSMakeRange(2, 3)];
		NSLog(@"删除索引为2~5处的元素后:%@" , NSCollectionToString(array));
		// 替换索引为2处的元素
		[array replaceObjectAtIndex:2 withObject:@"fgh"];
		NSLog(@"替换索引为2处的元素后:%@" , NSCollectionToString(array));
	}

  

时间: 2024-10-10 07:33:45

我的OC成长之路(复习之数组)的相关文章

OC成长之路 &lt;一&gt; 位运算符、枚举、(原码,补码,反码)、以及NSInteger,NSUInteger,int的区别

引言: 咳咳,首先我是一枚资深小白(资深小白- -.也太衰),这个博客是自己用来记录迷糊犯二的东西. 最近发现难道是因为老了么(我明明18....),很多东西,脑子已经不记得了,迷迷糊糊,概念理论的东西脑子里面七零八落. 从一个知识点跳到另一个知识点,简直是连环事故. ??sad. 傲娇的我不服,决心要认认真真做好笔记,记录期间遇见的种种. 生活要有仪式感,学习应该也是要这样,作为Chapter 1 ,应该要起个好名字. 想了几十分钟,还是随便一些吧. 那就叫: OC成长之路 okok,来开始今

我的OC成长之路(复习)

一.数组 1.简单的数组排序(sortedArrayUsingSelector:) NSArray *array = @[@123,@7889,@231]; NSArray *sortArray =[array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",sortArray); //字符串对比,会根据逐个字符进行对比排序 NSComparisonResult compare(id obj1,id obj2){ i

我的OC成长之路(复习之日期与时间)

注意: 1.计算当月内的日历 计算一个月内总共有几天: // 获取当月的天数 - (NSInteger)getNumberOfDaysInMonth { NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // 指定日历的算法 NSDate * currentDate = [NSDate date]; // 这个日期可以你自己给定 NSRange range =

我的OC成长之路(复习之字符串)

注意点: 1.fromIndex,toIndex,withRange 从哪个位置其到尾,从开头到哪个位置,从哪到哪之间的位置. 不过,这里需要注意的是,这个index是数组的下标的.从0开始算. 2.NSMutableString继承于NSString,NSString能用的方法,NSMutableString都能用. 3.NSMutableString追加字符串时,本身序列发生变化,无需重新赋值 一.不可变字符串NSString 1. 初始化方法 unichar data[6] = {97 ,

我的OC成长之路(日期与时间)

一.NSDate NSDate对象代表日期与时间,Objective-C提供了类方法来创建NSDate对象,也提供了大量init开头的方法来初始化NSDate对象. ①获取代表当前日期.时间的NSDate NSDate *date1 = [NSDate date]; ②获取从当前时间开始1天之后/三天之前的日期 NSDate *date2 = [[NSDate alloc]initWithTimeIntervalSinceNow:3600*24]; NSDate *date3 = [[NSDat

我的OC成长之路(文件管理)

注意: 措施名称 描述 -(NSData *)contentsAtPath:path 从path所代表的文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr 将数据写入文件 -(BOOL)removeFileAtPath:path handler:handler 将path所代表的文件删除 -(BOOL)movePath:from toPath:to handler:handler 移动或者重命名文件,t

我的OC成长之路(UI-View)

一.UIVIew 属性 1.frame 位置和尺寸(以父控件的左上角为原点(0,0)) 2.center 中点 (以父控件的左上角为原点(0,0)) 3.bounds 位置和尺寸(以自己的左上角为原点 (0,0)) 4.transform 形变属性(缩放,旋转) 5.backgroundColor 背景颜色 6.tag 标识(父控件可以根据这个标识找到对应的子控件,同一个父控件中的子控件不要一样) 7. hidden 设置是否要隐藏 8.alpha 透明度(0~1); 9.opaque 不透明度

菜鸟程序员的成长之路(三)——2014,逝去的半年,奋斗的半年

从3月份到现在,仅仅半年的时间让我扮演了两个完全不同的角色,从在校生一下变成了毕业生,作为毕业生不能再像在校生一样自由自在,无所顾忌,想怎样就怎样,肆无忌惮的生活,浪费时间.如果你想从容的面临未来的生活,就需要彻头彻尾的改变.多一份稳重,多一份责任,多一份担当. 鉴于LZ不太擅长写非技术博文,那就以碎碎念的形式,来回顾一下我的奋斗历程: 技术 3月份开始备战软考,软考准备了两个多月的时间,从看视频做笔记,再到大家一起讲课,复习,做试题巩固,整个过程至今历历在目.软考虽然不难,但是对于基础差的同学

大二女生web开发成长之路——讲述我从软妹子到女汉子的进阶过程

学习和实践前端一年时间,几乎天天在工作室和一群屌丝男程序员一起学习.开发.这种潜移默化的环境下,编码提高了,节操也细碎了. 一年前,娇滴滴的还是工作室里面小师妹一枚,软软的软件工程妹子,做不到人见人爱,但在这个据说男女比例8比1的学校中,仍是比较受欢迎群体——女生中的一员. 然而,    回想过去这一年,跟一帮大老爷们坐在一起讲蛋疼的笑话: 工作室聚餐中满怀“邪”意地企图把师兄们灌醉: 为了赶项目,可以经常和某位苦逼男一起debug到两三点,不亦乐乎: 男生唤我作欣姐,各种玩笑各种开,因为都不拿