NSArray、NSMutableArray

/---------------------------创建数组------------------------------/

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

//把数组 写到某一个文件下 atomic nonatomic
BOOL ret= [arr writeToFile:@"/Users/apple/Desktop/T1.plist" atomically:YES];

NSArray * arr2 = [[NSArray alloc]initWithContentsOfFile:@"/Users/apple/Desktop/T1.plist"];
NSLog(@"%@",arr2);

冒泡法排序

    for (int i = 0; i< [array count]-1; i++)
    {
        for(int j = 0; j<[array count]-i - 1;j++)
        {
            Person * aPerson = array[j];
            Person * bPerson = array[j+1];
            if ([aPerson age]>[bPerson age]) {
                [array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
            }
        }
    }

//block排序
//参数 obj1 相当于 arr[i] obj2 相当于 arr[i+1]
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
//写代码
//block排序 返回值 可以是一个表达式 或者是一个布尔值(0 ,1)
Person *aPerson = obj1;
Person *bPerson = obj2;
//如果想要比较年龄 写一个返回值 表达式
return [aPerson age]>[bPerson age];
}];

    [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"%@",obj);
    }];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容