美文网首页Object C基础回顾
NSArray、NSMutableArray

NSArray、NSMutableArray

作者: DVWang | 来源:发表于2017-09-08 14:48 被阅读0次

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

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

    相关文章

      网友评论

        本文标题:NSArray、NSMutableArray

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