码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-08-01 15:33:54      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

注意:

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));
	}

  

 

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

标签:

原文地址:http://www.cnblogs.com/lsa0913/p/5724555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!