NSArray

最近这段时间,把博客落下了,事情太多,以至于总是给自己各种借口去把事情往后推。这样很不好,还是应该让自己有更强一些的自制力,耐得住寂寞才能走的更远。今天想先把NSArray这块的内容做一些总结,也像NSString一样,作为一个工具博客来用吧。

一:NSArray的初始化

NSArray的初始化一般有一下这样几种方式

NSArray *array1 = @[]; // 最简便的方式
NSArray *array2 = [NSArray new];  // 惯用方式
NSArray *array3 = [[NSArray alloc]initWithObjects:@"", nil]; //
NSArray *array4 = [[NSArray alloc]initWithArray:array1];  //根据一个已有的数组定义一个新的数组

二:NSArray的一些常用小技巧

1:用一个分隔符将整个array组合成一个NSString

NSArray *array = @[@"I",@"❤️",@"U"]; // 最简便的方式
    // 将array数组转换为string字符串
NSString *string = [array1 componentsJoinedByString:@" "];

将会输出“I ❤️ U”。

2:比较一个元素是否存在于当前数组当中

NSArray *array = @[@"I",@"❤️",@"U"]; // 最简便的方式
BOOL isInclude = [array containsObject:@"I"];

isInclude的值是YES

3:判断两个数组是否完全一致

NSArray *array1 = @[@"1",@"2"];
NSArray *array2 = @[@"1",@"2"];
NSArray *array3 = @[@"1",@"2",@"3"];
    
BOOL isSame1 = [array1 isEqualToArray:array2];
BOOL isSame2 = [array1 isEqualToArray:array3];

isSame1为YES ,isSame2 为NO

4:已知数组中有一个元素,想要知道这个元素所在的最小下标

NSArray *array1 = @[@"1",@"2",@"3",@"1",@"2"];
    
NSInteger index = [array1 indexOfObject:@"1"];
NSInteger indexWithRange = [array1 indexOfObject:@"1" inRange:NSMakeRange(2, 2)];

NSLog(@"%ld ____ %ld",(long)index,(long)indexWithRange);

输出“0 ____ 3”

5:让数组倒序遍历,可以用于获取一个新的倒序数组

NSArray *array1 = @[@"1",@"2",@"3",@"1",@"2"];
NSArray *array2 = [[array1 reverseObjectEnumerator] allObjects];
NSLog(@"%@",array2);

输出的是【2,1,3,2,1】

6:利用sortedArray来将数组排序,排序方式有很多种,Function【函数】,Comparator【比较】,Selector【选择器】

NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"4",nil];
    NSComparator cmptr = ^(id obj1, id obj2){
        if ([obj1 integerValue] > [obj2 integerValue]) {
            return (NSComparisonResult)NSOrderedDescending;
        }
        
        if ([obj1 integerValue] < [obj2 integerValue]) {
            return (NSComparisonResult)NSOrderedAscending;
        }
        return (NSComparisonResult)NSOrderedSame;
    };
    NSArray *array = [sortArray sortedArrayUsingComparator:cmptr];
    NSString *arrayStr = [array componentsJoinedByString:@""];
    NSLog(@"%@",arrayStr);

输出【1234456781213152028】

7:从数组中截取一段成为一个新的数组

NSArray *array1 = @[@"1",@"2",@"3",@"1",@"2"];
NSArray *array2 = [array1 subarrayWithRange:NSMakeRange(0, 2)];
NSLog(@"%@",array2);

输出array2 : @[@"1",@"2"]

8:使用enumerateObjectsUsingBlock快速遍历数组

NSArray *array1 = @[@"1",@"2",@"3",@"1",@"2"];
    NSMutableString *str = [NSMutableString new];
    [array1 enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        [str appendString:(NSString *)obj];
    }];
    NSLog(@"%@",str);

输出【12312】

9:一些关于NSArray的常用属性

NSArray *array1 = @[@"1",@"2",@"3",@"1",@"2"];
NSInteger count = array1.count;  //数组的组成元素个数
NSString *str1 = array1.firstObject; //第一个元素
NSString *str2 = array1.lastObject; //最后一个元素

三:NSMutableArray

1:可变数组的增加

- (void)addObject:(ObjectType)anObject;   // 增加一个元素到数组的最后面
- (void)addObjectsFromArray:(NSArray<ObjectType> *)otherArray; // 将整个新的数组加到原来的数组中

2:可变数组的插入

- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index; // 插入一个元素到数组的指定位置
- (void)insertObjects:(NSArray<ObjectType> *)objects atIndexes:(NSIndexSet *)indexes; // 插入一个数组到原来数组的指定位置

3:可变数组的移除

- (void)removeLastObject; // 移除数组的最后一个元素
- (void)removeObjectAtIndex:(NSUInteger)index; // 移除指定位置的元素 
- (void)removeAllObjects; // 移除数组中的所有元素
- (void)removeObject:(ObjectType)anObject inRange:(NSRange)range; // 移除指定范围内的指定元素
- (void)removeObject:(ObjectType)anObject; // 移除指定的元素
- (void)removeObjectsInArray:(NSArray<ObjectType> *)otherArray; // 移除选定数组所包含的元素
- (void)removeObjectsInRange:(NSRange)range; // 移除指定范围内的所有元素

4:可变数组的替换

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject; // 替换指定位置的元素

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2; // 将数组的idx1和idx2位置上的元素进行互换
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray range:(NSRange)otherRange; //用一个新的数组的一部分替换指定范围内的数组
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray;//用一个新的数组替换指定范围内的数组

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

推荐阅读更多精彩内容