NSArray *array = @[@"string 1",
        @"string 3",
        @"string 4",
        @"string 2"
    ];
    //使用block,枚举所有数组元素,相当于forin循环
    NSLog(@"排序之前:\n");
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"object at index %d = %@\n", idx, obj);
    }];
    
    NSLog(@"排序: \n");
    
    //注意NSComparisonResult的用法
    NSMutableArray *sortArray = [NSMutableArray arrayWithArray:array];
    //sortUsingComparator方法只可以直接改变NSMutableArray元素顺序
    [sortArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSString *str1 = obj1;
        NSString *str2 = obj2;
        return [str1 compare:str2];
    }];
    
    [sortArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"object at index %d = %@\n", idx, obj);
    }];
    
    //NSArray是只读的,只能使用sortedArrayUsingComparator,并重新赋值
    array = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSString *str1 = obj1;
        NSString *str2 = obj2;
        return [str1 compare:str2];
    }];
    
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"object at index %d = %@\n", idx, obj);
    }];

NSDictionary、NSMutableDictionary也有类似

NSSet与NSArray的区别,在于同一个对象只允许添加一次,而NSArray没有这个限制

 

相关文章:

  • 2022-01-11
  • 2022-03-06
  • 2021-06-24
  • 2021-11-17
  • 2022-01-24
  • 2022-12-23
猜你喜欢
  • 2021-12-30
  • 2021-06-21
  • 2022-01-02
  • 2022-12-23
  • 2021-11-10
相关资源
相似解决方案