NSArray, NSNumber, NSValue, NSSet, 数组排序

来源:互联网 发布:js中name选择器 编辑:程序博客网 时间:2024/05/21 09:35

数组分为:不可变数组(NSArray)和可变数组(NSMutableArray)

数组是存储在UI中可显示内容的集合, 数组必须先初始化才能使用

/*NSArray */


1.创建不可变数组

        NSArray *arr = [NSArray array];

        NSArray *arr1 =[NSArray arrayWithObjects:@"iphone",@"sanung",@"miui", nil];

2.获取元素的个数

        NSLog(@"%ld", [arr1 count]);

3.根据下标获取对象, 根据对象获取下标

        NSLog(@"%@", [arr1 objectAtIndex:2]);                NSLog(@"%ld", [arr1 indexOfObject:@"iphone"]);

4.遍历数组

        for (int i = 0; i < [arr1 count]; i++) {            NSLog(@"%@",[arr1 objectAtIndex:i]);        }


        for (NSString *str in arr1) {            NSLog(@"%@", str);        }


/*NSMutableArray */


1.创建可变数组对象

        NSMutableArray *marr1 = [NSMutableArray arrayWithObjects:@"windows",@"unix", nil];

2.添加元素

        [marr1 addObject:@"linux"];

3.插入元素

       [marr1 insertObject:@"Mac" atIndex:0]; //根据下标插入元素

4.删除元素

        [marr1 removeLastObject];        [marr1 removeObject:@"Mac"];        [marr1 removeAllObjects];

5.替换

        [marr1 replaceObjectAtIndex:0 withObject:@"ASD"];

6.交换两个指定的元素

        [marr1 exchangeObjectAtIndex:0 withObjectAtIndex:1];


/* NSNumber */


所有的基础类型变量是不能当对象存储到容器中(数组,字典等)因此,基础类别的变量想要储存的话需要转换成别的对象才能存储.

(1)存储

        int a = 10;        NSNumber *num = [NSNumber numberWithInt:a];        [arr1 addObject:num];
(2)取值

        NSNumber *num2 = [arr1 lastObject];        int b = [num2 intValue];


/* NSValue   */


和NSNumber的功能一样, 区别是将结构体转换成对象


(1)存储

        NSRange range = NSMakeRange(0, 0);        NSValue *value = [NSValue valueWithRange:range];

(2)取值

        NSRange range1 = [value rangeValue];



集合分为: 不可变集合(NSSet)和可变集合(NSMutableSet)

/*  NSSet   */

1. 创建 (常见的初始化方法)

      (1)  NSSet *set = [NSSet setWithObjects:@"123",@"123",@"456", nil];
      (2)  NSArray *arr = [NSArray arrayWithObjects:@"1",@"3",@"3", nil];                   NSSet *set1 = [NSSet setWithArray:arr];        
      (3)  NSSet *set2 = [[NSSet alloc]initWithArray:@[@"1",@"1"]];

2.获取元素个数(集合中元素师唯一且不重复的)

        NSLog(@"%ld", [set count]);

3.获取set中的某个元素

        [set anyObject];

4.判断set中是否包含某一个对象

        [set containsObject:@"123"];

5.添加元素

        set = [set setByAddingObject:@"4"]; //添加对象                set =  [set setByAddingObjectsFromSet:set1]; // 把其他set的元素添加集合里

/*  NSMutableSet*/


1.创建

        NSMutableSet *mSet = [NSMutableSet setWithObjects:@"123",@"456",@"789", nil];

2.添加元素, 移除元素

        [mset addObject:@"000"];                [mset removeObject:@"123"];

3.遍历集合

        NSMutableSet *mset1 = [[NSMutableSet alloc]initWithObjects:@"1",@"2",@"3", nil];                for (NSString *str in [mset1 allObjects]) {            NSLog(@"%@", str);        }


/* 数组排序 */


数组进行由小到大的排序


        (1)不可变数组        NSArray *array1 = [NSArray arrayWithObjects:@"2", @"1", @"3", @"5", nil];                //将数组进行排序       NSArray *sortArray1 = [array1 sortedArrayUsingSelector:@selector(compare:)];                //输出数组        for (NSString *str in sortArray1) {            NSLog(@"%@", str);        }                (2)可变数组        NSMutableArray *mArray = [NSMutableArray arrayWithArray:array1];                //将数组进行排序        [mArray sortUsingSelector:@selector(compare:)];                //输出数组        for (NSString *str in mArray) {            NSLog(@"%@", str);        }

0 0