/***********************************************************************************************************************
NSArray
************************************************************************************************************************/
/*---------------------------创建数组------------------------------*/
NSArray *array = [[NSArray alloc] initWithObjects:
@"One",@"Two",@"Three",@"Four",nil];
NSArray * array1 = [[NSArray alloc]initWithArray:array];
NSArray * array2 = [NSArray arrayWithArray:array];
NSArray *array3 = [[NSArray arrayWithObjects:
@"One",@"Two",@"Three",@"Four",nil];
[array release];
[array1 release];
//- (NSUInteger) Count;数组所包含对象(元素)个数;
NSLog(@"count:%d",[array count]);
//- (id) objectAtIndex: (NSUInteger) index;获取指定索引处的对象(元素);
NSLog(@"object :%@",[array objectAtIndex:2]);
/*查找:根据元素找到对应的索引*/
NSArray*array=[[NSArrayalloc]initWithObjects:@"one",@"two",@"three",@"one", nil];
//返回找到的第一个的索引, 一切操作不要越界
NSUInteger index = [array indexOfObject:@"one"];
//在指定范围内查找
index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];
if (index != NSNotFound) {//找不到返回NSNotFound
NSLog(@"index = %ld",index);
}
/*数组的抽取*/
NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
//NSIndexSet数字集合类
//[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)];创建一个数字集合对象//该集合成员是数字1,2,3;
/*枚举器*/
//创建一个正序枚举器
NSEnumerator * enume1 = [array objectEnumerator];
//枚举器是读数据的
while (obj = [enume1 nextObject]) {
NSLog(@"%@",obj);
}
//快速枚举(正序)
NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",nil];
for(id obj in array)
{
NSLog(@"obj:%@",obj);
}
//创建一个逆序枚举器
NSEnumerator * enume2 = [array reverseObjectEnumerator];
while (obj = [enume2 nextObject]) {
NSLog(@"obj = %@",obj);
}
/*---------------------------字符串分割到数组------------------------------*/
NSString * str = @" Yes,I am a good man ";
//以字符串整体作为分割条件
NSArray * array = [str componentsSeparatedByString:@" "];//以@” ” 作为分割条件
NSArray*array1 = [str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" ,"]];//以字符作为分割条件
//NSCharacterSet 字符集合
//[NSCharacterSet characterSetWithCharactersInString:@" ,"];把字符串@" ,"转化为一个字符集合
//这个集合的成员就是字符' '和字符',';
//返回值 是NSArray 不要写成NSMuatbaleArray
/*---------------------------数组元素拼接成字符串------------------------------*/
NSString * ptr = [array componentsJoinedByString:@"###"];//把数组元素拼接成字符串
NSLog(@”ptr = %@”,ptr);
/*************************************************************************************************************************************
NSMutableArray
************************************************************************************************************************************/
/*创建一个可变数组(继承于NSArray)*/
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
@"One",@"Two",@"Three",@"Four",nil];
NSMutableArray * array1 = [[NSMutableArray alloc]initWithArray:array];
NSMutableArray * array2 = [NSMutableArray arrayWithArray:array];
NSMutableArray *array3 = [[NSMutableArray arrayWithObjects:
@"One",@"Two",@"Three",@"Four",nil];
[array release];
[array1 release];
//把不可变转化为一个新的可变数组
NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",nil];
NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];
//增add (insert)
[array addObject:@"four"];//在最后增加
[array insertObject:@"iOS" atIndex:1];//在指定索引插入一个元素
//删除(remove)
[array removeObjectAtIndex:1];//根据索引删除元素
[array removeObject:@"one"];//删除数组元素:有几个删几个
[array removeObject:@"one" inRange:NSMakeRange(0, 2)]; //在指定范围内删除
//替换(replace):修改
[array replaceObjectAtIndex:0 withObject:@"qianfeng"];
//交换(exchange)
[array exchangeObjectAtIndex:1 withObjectAtIndex:2];
/*可变数组排序*/
//创建一个空的可变数组
//(首先设计一个Dog类)
NSMutableArray * array = [[NSMutableArray alloc]init];
while (i++ < 5) {
Dog * dog = [[Dog alloc]initWithAge:arc4random()%10];
[array addObject:dog];
}
[array sortUsingSelector:@selector(youngThanAge:)];
//sortUsingSelector这是一个排序方法;已经实现了,
//但是需要我们提供一个准则(就是一个函数)这个准则是(升序)左边 大于右边 进行交换 或者是(降序)左边小于右边进行交换
//数组的元素是哪个类?那么这个准则就写在哪个类中
//这就是一个准则 左边 大于 右边 进行交换
//升序
-(BOOL)olderThanAge:(Dog *)_dog
{
return [self age] > [_dog age];
}