NSArry基本用法

来源:互联网 发布:oracle的sql developer 编辑:程序博客网 时间:2024/05/16 09:42

创建数组

//类方法创建数组(空数组,没有意义)    NSArray *array = [NSArray array];        //实例方法创建数组(空数组)    NSArray *array1 = [[NSArray alloc]init];        //创建一个数组并初始化元素  nil表示数组结束     NSArray *array2 = [NSArray arrayWithObjects:@"wukong",@"八戒",@"baigujing", nil];        //用一个数组去创建一个新数组(相当于数组拷贝)    NSArray *array3 = [NSArray arrayWithArray:array2];            //快速创建    NSArray *array4 = @[@"1",@"ret",@"frsgdfh"];        //实例方法指定对象创建数组    NSArray *array5 = [[NSArray alloc]initWithObjects:@"3",@"JDS",@"f", nil];

//数组元素个数    NSLog(@"%ld",[array5 count]);        //访问数组元素    NSLog(@"%@",[array5 objectAtIndex:1]);    NSLog(@"%@",array5[1]);        //是否包含某一对象(调用这个对象的isEqual方法)    BOOL isContain = [array containsObject:@"1"];        //字符串切割成数组    NSString *string7 = @"20|http://www.baidu.com";    NSArray *a = [string7 componentsSeparatedByString:@"|"];    for (int i = 0; i < [a count]; i++) {        NSLog(@"%@",a[i]);    }

可变数组

 //创建可变数组(不能像NSArray那样快速创建)    NSMutableArray *mArray = [NSMutableArray array];    NSMutableArray *mutableArray1 = [[NSMutableArray alloc]init];//实例变量初始化    //创建时该数组可容纳元素个数    NSMutableArray *arr = [NSMutableArray arrayWithCapacity:10];


 //添加数组元素    [mutableArray1 addObject:@"xiaobai"];    //添加多个数组元素    mutableArray1.array = @[@"ds",@"3",@"rt"];    //在指定下标插入元素    [mutableArray1 insertObject:@"xiaohei" atIndex:1];        //删除数组末尾元素    [mutableArray1 removeLastObject];        //删除所有元素    [mutableArray1 removeAllObjects];        //根据元素对象删除数组对应元素(通过isEqual方法比较)    [mutableArray1 removeObject:@"xiaohei"];        //根据数组元素下标,删除对应元素    [mutableArray1 removeObjectAtIndex:0];        //遍历数组    NSArray *array6 = [NSArray arrayWithObjects:@"Naruto",@"Luffy",@"Sasuke",@"Zoro",@"Conan",@"Kakashi", nil];    for (int i = 0; i < [array6 count]; i++) {        NSLog(@"%@",[array6 objectAtIndex:i]);        NSLog(@"%@",array6[i]);    }        for (NSString *str in array6) {        NSLog(@"%@",str);    }        //获取数组第一个元素    NSLog(@"%@",[array6 firstObject]);        //获取数组最后一个元素    NSLog(@"%@",[array6 lastObject]);                // 字符串转数组    NSString *string = @"1 2 3 4 5 6";    //  使用字符串来分割原来的字符串成一个数组    NSArray *array14 =  [string componentsSeparatedByString:@" "];        NSLog(@"%@",array14);    //  把数组组装字符串    NSString *str = [array componentsJoinedByString:@"-"];    NSLog(@"%@",str);            //  让数组中的所有元素执行某个方法    [array makeObjectsPerformSelector:@selector(bark)];    [array makeObjectsPerformSelector:@selector(eat:) withObject:@"骨头"];        //遍历数组    //  使用普通for     NSArray *arr3 = @[@"re",@"fd",@"s"];            for (int index = 0; index < array.count; index++) {              NSString *sss =  array[index];              NSLog(@"%@",sss);        }     // 使用增加for(最常用)           for (NSString *str in arr) {                NSLog(@"%@",str);            }        //  通过枚举器        NSEnumerator *enumer  =  [arr objectEnumerator];        NSString *newDog;        while (newDog = [enumer nextObject]) {            NSLog(@"%@",newDog);        }        //  通过block方式    //   idx 表示这个元素在数组索引    //   stop 设置为YES 那么就不往后遍历的    [arr enumerateObjectsUsingBlock:^(NSString * dog, NSUInteger idx, BOOL *stop) {        NSLog(@"%@-%zd",dog,idx);        if (idx == 2) {            *stop = YES;        }    }];        // 使用比较器(block)//        array = [array sortedArrayUsingComparator:^NSComparisonResult(CZDog * obj1, CZDog *  obj2) {//    //            if(obj1.age == obj2.age){//                return [obj1.name compare:obj2.name];//            }else if(obj1.age > obj2.age){//                return NSOrderedDescending;//降序//            }else{//                return NSOrderedAscending;//升序//            }////        return [obj1.name compare:obj2.name];//        }];//    NSLog(@"%@",array);    //属性描述器比较    NSSortDescriptor *desc1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];    NSSortDescriptor *desc2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];        array = [array sortedArrayUsingDescriptors:@[desc1,desc2]];    NSLog(@"%@",array);

数组元素拼接字符串

[array componentsJoinedByString:@""];

数组排序

NSArray *array = [self.modelArray sortedArrayUsingComparator:^NSComparisonResult(FriendModel* obj1, FriendModel* obj2) {                        if (obj1.time.integerValue > obj2.time.integerValue) {                            return (NSComparisonResult)NSOrderedDescending;                        }else{                                                        return (NSComparisonResult)NSOrderedAscending;                        }                        //                    [self getCommentAndPraise];                    }]


    #pragma mark 数组排序1      void arraySort1() {          NSArray *array = [NSArray arrayWithObjects:@"2", @"3", @"1", @"4", nil nil];                    // 返回一个排好序的数组,原来数组的元素顺序不会改变          // 指定元素的比较方法:compare:          NSArray *array2 = [array sortedArrayUsingSelector:@selector(compare:)];          NSLog(@"array2:%@", array2);      }            #pragma mark 数组排序2      void arraySort2() {          Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"];          Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"];          Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"];          Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"];          NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil];          // 指定排序的比较方法          NSArray *array2 = [array sortedArrayUsingSelector:@selector(compareStudent:)];          NSLog(@"array2:%@", array2);      }      - (NSComparisonResult)compareStudent:(Student *)stu {          // 先按照姓排序          NSComparisonResult result = [self.lastname compare:stu.lastname];          // 如果有相同的姓,就比较名字          if (result == NSOrderedSame) {              result = [self.firstname compare:stu.firstname];          }          return result;      }            #pragma mark 数组排序3      void arraySort3() {          Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"];          Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"];          Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"];          Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"];          NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil];                    // 利用block进行排序          NSArray *array2 = [array sortedArrayUsingComparator:           ^NSComparisonResult(Student *obj1, Student *obj2) {               // 先按照姓排序               NSComparisonResult result = [obj1.lastname compare:obj2.lastname];               // 如果有相同的姓,就比较名字               if (result == NSOrderedSame) {                   result = [obj1.firstname compare:obj2.firstname];               }                              return result;          }];                    NSLog(@"array2:%@", array2);      }            #pragma mark 数组排序4-高级排序      void arraySort4() {          Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li" bookName:@"book1"];          Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang" bookName:@"book2"];          Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li" bookName:@"book2"];          Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao" bookName:@"book1"];          NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil];                    // 1.先按照书名进行排序          // 这里的key写的是@property的名称          NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES];          // 2.再按照姓进行排序          NSSortDescriptor *lastnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES];          // 3.再按照名进行排序          NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstname" ascending:YES];          // 按顺序添加排序描述器          NSArray *descs = [NSArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil nil];                    NSArray *array2 = [array sortedArrayUsingDescriptors:descs];                    NSLog(@"array2:%@", array2);      }  


0 0