iOS假装进步

编码篇-数组的相关使用

2017-11-29  本文已影响15人  進无尽

前言

数据的常规方法的使用本文不做描述,本文旨在归纳一些数组不是很常用的方法使用。算作一个归纳笔记,后续会持续更新.....

判断数组中是否包含某个元素

- (BOOL)containsObject:(ObjectType)anObject;

数组快速去重

NSArray *tmpArray=@[@"one", @"two", @"one"];
tmpArray = [tmpArray valueForKeyPath:@"@distinctUnionOfObjects.self"];

这样,我们就已经完成了数组的去重,得到的tmpArray里面已经去掉了重复的@"one".

数组快速倒序

NSArray *tmpArray = @[@"one", @"two", @"three"];
tmpArray = tmpArray.reverseObjectEnumerator.allObjects;

很简单吧,只用一行代码,就完成了倒序操作,得到的tmpArray为@[@"three", @"two", @"one"].

优雅的获取数组的最大值、最小值

NSMutableArray* array = [NSMutableArray array];for (int i = 0; i < 10; i++)
 {    CGFloat num = arc4random() % 100 + 1;  
    [array addObject:[NSNumber numberWithFloat:num]];
  }
  CGFloat maxValue = [[array valueForKeyPath:@"@max.floatValue"] floatValue];
  CGFloat minValue = [[array valueForKeyPath:@"@min.floatValue"] floatValue];

数组排序:

数组遍历

获取数组中的子数组

-(NSArray *)subarrayWithRange:(NSRange)range;

NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
如:
NSArray *test = [array subarrayWithRange:NSMakeRange(2, 2)];
tom,
test
注意range 的数值不要越界。

写入数组中的数据到指定path 的目录中

参数:atomically 是否把文件保存到辅助文件中
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

根据indexes 获取一个数组

-(NSArray *)objectsAtIndexes:(NSIndexSet *)indexes;, NSIndexSet 是一个用来管理 index 的对象。

例子如下:
   NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
   //NSIndexSet *se = [NSIndexSet indexSetWithIndex:0];
或者是
  NSIndexSet *se = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 2)];
  NSArray *test = [array objectsAtIndexes:se];
  NSLog(@"%@",test);

常见却少用的方法

这个方法的实现类似于,数组中的元素,都是类对象,aselector 是这些类中的无参方法。
-(void)makeObjectsPerformSelector:(SEL)aSelector;
-(NSArray *)sortedArrayUsingSelector:(SEL)aSelector;

上一篇 下一篇

猜你喜欢

热点阅读