iOS  NSarray,NSMutableArray 最基本用法_技术成长笔记_新浪博客

pragma mark 给数组里面的元素发送消息

void arrMessage() {

    RTStudent *stu1 = [RTStudent rtStudent];

    RTStudent *stu2 = [RTStudent rtStudent];

    RTStudent *stu3 = [RTStudent rtStudent];

    

   NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3, nil];

    // 让数组中每个元素都调用test方法

    [arr makeObjectsPerformSelector:@selector(test2:) withObject:@"123"];

}


- (void)test2:(NSString *)str

{

    

}


#pragma mark 遍历数组3

void arrayFor3() {

   NSArray *arr = [NSArray arrayWithObjects:@"11",@"222",@"3333", nil];

    [arr enumerateObjectsUsingBlock:

     ^(id obj, NSUInteger idx, BOOL *stop) { // stop 停止遍历

        if (idx == 2) {

             *stop =YES; // 停止遍历

         }

    }];

}


#pragma mark 遍历数组4

void arrayFor4() {

    RTStudent *stu = [RTStudent rtStudent];

   NSArray *arr = [NSArray arrayWithObjects:@"11",@"222",@"3333", nil];


    // 获取数组的迭代器

//    NSEnumerator *enmumerator = [arr objectEnumerator];

    

    // 反序迭代器(从尾开始遍历元素)

   NSEnumerator *enmumerator = [arr reverseObjectEnumerator];

    // 获取下一个需要遍历的元素

   id obj = nil;

   while (obj = [enmumerator nextObject]) {

        

    }

}


#pragma mark 指定范围截取数组元素

void arrary() {

   NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];

   NSRange range = NSMakeRange(1, 2);

   NSArray *array5 = [array subarrayWithRange:range];

   NSLog(@"%@",array5); // 2 3

}


#pragma mark 数组其他用法

void arrayOther() {

   

   NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];

    NSString *str = [array componentsJoinedByString:@"+"];

   NSLog(@"%@",str);

    

   

    NSString *path = @"/Users/yumaohua/Desktop/abc.xml";

    [array writeToFile:path atomically:YES];

    

   

    NSArray *arr2 = [NSArray arrayWithContentsOfFile:path];

   NSLog(@"%@",arr2);

}


#pragma  mark 数组排序1

void arrSort1() {

        NSArray *array = [NSArray arrayWithObjects:@"4",@"3" ,@"9",@"2",nil];

    // 返回一个排序好的数组,对原数组元素数序不变

    // 指定元素的比较方法:compare:

   NSArray *array2 = [array sortedArrayUsingSelector:@selector(compare:)];

   NSLog(@"array2 = %@",array2);  

    

}


#pragma mark 数组排序2

void arraSort2() {

   Student *stu1 = [Student student:@"Rong" firstname:@"Tian"];

   Student *stu2 = [Student student:@"Huang" firstname:@"Long"];

   Student *stu3 = [Student student:@"Rong" firstname:@"Zhen"];

   Student *stu4 = [ Student student:@"Jing" firstname:@"ji"];

    

   NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3,stu4, nil];

   NSArray *arr2 = [arr sortedArrayUsingSelector:@selector(compareStudent:)];

   NSLog(@"arr2= %@",arr2);

}


#pragma mark 数组排序3

void arraSort3() {

   Student *stu1 = [Student student:@"Rong" firstname:@"Tian"];

   Student *stu2 = [Student student:@"Huang" firstname:@"Long"];

   Student *stu3 = [Student student:@"Rong" firstname:@"Zhen"];

   Student *stu4 = [ Student student:@"Jing" firstname:@"ji"];

    

   NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3,stu4, nil];

   NSArray *arr2 = [arr 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(@"arr2 = %@",arr2);

}


#pragma mark 数组排序4

void arraSort4() {

    // 1先按照书名进行排序 2.再按照姓 3名 排序

    Student *stu1 = [Student student:@"Rong" firstname:@"Tian" bookName:@"book4"];

    Student *stu2 = [Student student:@"Huang" firstname:@"Long" bookName:@"boo1"];

    Student *stu3 = [Student student:@"Rong" firstname:@"Zhen" bookName:@"book3"];

    Student *stu4 = [ Student student:@"Jing" firstname:@"ji" bookName:@"book2"];

    

   NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3,stu4, nil];

    

    // 1.先按照书名进行排序 book.name >对Student的属性book对象的name排序

    NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES];

    // 2.再按照姓进行排序

   NSSortDescriptor *lastnameNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES];

    // 3.再按照名字进行排序

    NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];

    // 按顺序添加排序描述器

  NSArray *arr2 =  [NSArray arrayWithObjects:bookNameDesc,lastnameNameDesc,firstnameDesc, nil];

    NSArray *array = [arr sortedArrayUsingDescriptors:arr2];

   NSLog(@"array= %@  %zi",array,[array retainCount]);

}



来源:一起扯扯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值