美文网首页
iOS官方文档 Foundation篇---NSArray(NS

iOS官方文档 Foundation篇---NSArray(NS

作者: qianfei | 来源:发表于2019-02-22 16:43 被阅读4次

    人生在世 总是要不断 创新 挑战 突破 被淘汰算其次 活得刺激 有价值更加重要。

    ————叹希奇

    NSArray

    静态有序集合(不可变数组)

    #数组创建
    NSArray *array = @[@"1",@"2",@"3",@"4",@"5"];
    NSArray *array1 = [NSArray array];
    NSArray *array2 = [[NSArray alloc]init];
    NSArray *array3 = [[NSArray
    alloc]initWithObjects:@"b",@"a",@"e",@"c",@"d",@"1",@"2",@"3",@"4",@"5", nil];
    NSArray *array4 = [[NSArray alloc]initWithArray:array];
    
    #数组取值
    //根据索引取值
    NSString *objest = [array objectAtIndex:0];
    NSString *objest1 = array[0];//1
    //取数组中的第一个对象
    NSString *string3 = array.firstObject;//1
    //取数组中的最后一个对象    
    NSString *string4 = array.lastObject;//5
    
    #数组属性
    //长度
    NSInteger length = array.count;
        
    //添加对象到数组尾部,返回一个新数组
    NSArray *array5 = [array arrayByAddingObject:@"6"];//1,2,3,4,5,6
    
    //添加一个数组到数组尾部,返回一个新数组
    NSArray *array6 = [array arrayByAddingObjectsFromArray:array1];//1,2,3,4,5
    
    //数组元素之间插入分隔符,返回一个字符串
    NSString *string = [array componentsJoinedByString:@"-"];//1-2-3-4-5
    
    //对象是否存在在数组中,返回一个BOOl值
    BOOL isConain = [array containsObject:@"1"];//YES
    
    //返回数组内容的字符串
    NSString *string1 = array.description;//1,2,3,4,5
    NSString *string1 = [array descriptionWithLocale:nil];//1,2,3,4,5
    
    //返回接收数组中包含的第一个对象,该对象等于另一个给定数组中的对象。
    NSString *string2 = [array firstObjectCommonWithArray:array3];//1
    
    //返回其对应的数组值等于给定对象的最低索引。
    NSUInteger index = [array indexOfObject:@"1"];//0
        
    //返回指定范围内的最低索引,其对应的数组值等于给定对象
    NSUInteger index1 = [array indexOfObject:@"1" inRange:NSMakeRange(0, array.count)];//0
    
    //返回最低索引,其对应的数组值与给定对象相同。
    NSInteger index2 = [array indexOfObjectIdenticalTo:@"1"];//0
        
    //返回指定范围内的最低索引,其对应的数组值等于给定对象
    NSInteger index3 = [array indexOfObjectIdenticalTo:@"1" inRange:NSMakeRange(0, array.count)];//0
        
    //判断两数组是否相同,返回一个BOOL值
    BOOL isEqual = [array isEqualToArray:array1];//NO
    
    #数组遍历
    //正向遍历数组
    NSEnumerator *enumerator = [array objectEnumerator];
    NSString *objs;
    while (objs = [enumerator nextObject]) {
      NSLog(@"数组正序值开始打印:%@\n",objs);
    }
    //反向遍历数组
    NSEnumerator *reverseEnumerator = [array reverseObjectEnumerator];
    NSString *reobjs;
    while (reobjs = [reverseEnumerator nextObject]) {
      NSLog(@"数组倒序值开始打印:%@\n", reobjs);
    }
    
    #数组排序
    //排序方法
    NSInteger alphabeticSort(id string1, id string2, void *reverse)
    {
        if (*(BOOL *)reverse == YES) {
            return [string2 localizedCaseInsensitiveCompare:string1];
        }
        return [string1 localizedCaseInsensitiveCompare:string2];
    }
    
    NSData *data = [array3 sortedArrayHint];
    BOOL reverseSort = NO;
    NSArray *sortArr = [array3 sortedArrayUsingFunction:alphabeticSort context:&reverseSort];//12345abcde
    NSArray *sortArr = [array3 sortedArrayUsingFunction:alphabeticSort context:&reverseSort hint:data];//12345abcde
        
    //自定义排序方法
    NSArray *sortAr1 = [array3 sortedArrayUsingSelector:@selector(compare:)];//12345abcde
    
    //排序
    NSArray *sortArr1 = [array3 sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
      return [obj1 compare:obj2];
    }];//12345abcde
        
    //排序
    /*
    SSortOptions:
         NSSortConcurrent    高效的但不稳定的排序算法
         NSSortStable        稳定的排序算法
    */
    NSArray *sortArr2 = [array3 sortedArrayWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
      return [obj1 compare:obj2];
    }];//12345abcde
    
    #数组遍历
    //普通遍历
    for (NSInteger i = 0; i < array.count; i++) {
      NSString *str = array[i];
    }
    
    //快速遍历
    for (NSString *str in array) {
      NSLog(@"%@", str);
    }
    
    //枚举遍历
    [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
      NSLog(@"%@",obj);        
    }];
    
    /*
    NSEnumerationOptions
        NSEnumerationConcurrent   //无序遍历
        NSEnumerationReverse      //倒序遍历
     */
    //根据遍历选项遍历
    [array enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
      NSLog(@"%@",obj);
    }];
    
    //根据索引和遍历选项遍历数组
    NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0,2)];
    [array enumerateObjectsAtIndexes:set options:NSEnumerationConcurrent usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
      NSLog(@"%@",obj);
    }];
    

    NSMutableArray

    可变数组,继承自NSArray

    #可变数组创建
    NSArray *array = @[@"1",@"2",@"3",@"4",@"5"];//1,2,3,4,5
    NSMutableArray *mulArr = [[NSMutableArray alloc]initWithObjects:@"1",@"2", nil];////1,2
    NSMutableArray *mulArray = [[NSMutableArray alloc]initWithArray:array];//1,2,3,4,5
    
    #插入元素
    //在数组末尾插入给定对象
    [mulArr addObject:@"q"];//1,2,q
    //在数组末尾插入给定数组的元素
    [mulArr addObjectsFromArray:array];//1,2,q,1,2,3,4,5
    
    //在数组中插入元素到指定索引位置
    [mulArr insertObject:@"Q" atIndex:0];//Q,1,2,q,1,2,3,4,5
    //在数组中插入数组元素到指定索引位置
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, array.count)];
    [mulArr insertObjects:array atIndexes: indexSet];//1,2,3,4,5,Q,1,2,q,1,2,3,4,5
    
    #删除元素
    //删除数组中具有最高值索引的元素(最后一个元素)
    [mulArr removeLastObject];//1,2,3,4,5,Q,1,2,q,1,2,3,4
    
    //删除指定下标的元素
    [mulArr removeObjectAtIndex:0];//2,3,4,5,Q,1,2,q,1,2,3,4
    
    //删除给定数组中的元素
    [mulArr removeObjectsInArray:array];//Q,q
    
    //删除指定范围内的所有匹配的元素
    [mulArray removeObject:@"1" inRange:NSMakeRange(0, 3)];//,2,3,4,5
    
    //删除数组中所有匹配的元素
    [mulArray removeObject:@"2"];//3,4,5
    
    //删除数组中所有出现的给定对象。
    [mulArray removeObjectIdenticalTo:@"q"];//3,4,5
    
    //删除数组中指定范围内的所有匹配元素
    [mulArray removeObjectIdenticalTo:@"5" inRange:NSMakeRange(0, mulArray.count)];//3,4
    
    ////删除数组中指定范围内的元素
    [mulArray removeObjectsInRange:NSMakeRange(0, 1)];//4
    
    NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)];//nil
    //从数组中删除指定索引处的对象
    [mulArray removeObjectsAtIndexes:set];//nil
    
    //删除数组中所有的元素
    [mulArray removeAllObjects];
    
    #replace
    //替换元素
    [mulArray setArray:array];//1,2,3,4,5
    //替换数组中指定索引处的元素
    [mulArray replaceObjectAtIndex:0 withObject:@"Q"];//Q,2,3,4,5
    
    //将给定范围指定的接收数组中的对象替换为给定数组中的所有对象
    [mulArray replaceObjectsInRange:NSMakeRange(0, mulArray.count-1) withObjectsFromArray:array];//1,2,3,4,5,5
    
    //将由一个给定范围指定的接收数组中的对象替换为另一个范围指定的另一个数组中的对象。
    [mulArray replaceObjectsInRange:NSMakeRange(0, mulArray.count-1) withObjectsFromArray:array range:NSMakeRange(0, array.count-1)];//1,2,3,4,5
    
    //将接收数组中的对象替换为使用给定数组中的对象指定的位置。
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, array.count)];
    [mulArray replaceObjectsAtIndexes: indexSet withObjects:array];//1,2,3,4,5
    
    //将接收数组的元素设置为另一个给定数组中的元素
    [mulArray setArray:array];//1,2,3,4,5
    
    //用新对象替换索引处的对象,可能添加对象
    [mulArray setObject:@"1" atIndexedSubscript:0];//1,2,3,4,5
    
    #exchange index
    //交换数组中指定索引位置的元素
    [mulArray setArray:array];//1,2,3,4,5
    [mulArray exchangeObjectAtIndex:0 withObjectAtIndex:mulArray.count];//5,2,3,4,1
    
    #排序
    [mulArr sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
      return [obj1 compare:obj2];
    }];
    /*
    SSortOptions:
        NSSortConcurrent    高效的但不稳定的排序算法
        NSSortStable        稳定的排序算法
    */
    [mulArr sortWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
      return [obj1 compare:obj2];
    }];
    

    欢迎留言指正,会持续更新!!!

    相关文章

      网友评论

          本文标题:iOS官方文档 Foundation篇---NSArray(NS

          本文链接:https://www.haomeiwen.com/subject/fzhhyqtx.html