OC第四节NSArray,NSMutableArray,NSNumber总结

来源:互联网 发布:网络程琳个人资料 编辑:程序博客网 时间:2024/05/23 14:02
一 数组的价值:1 存储多个元素 2 存储的元素只能是对象, 对象可以是不同类型的 3 数组是一个有序的集合 4 数组中的元素可以重复, 而且重复的对象会成为数组元素二 创建数组1 通过便利构造器创建数组NSArray *arr1 = [NSArray arrayWithObjects:str1, str2, str3, str4, str5, str6, nil];arrayWithObjects 创建对象时可以指定多个对象元素, 元素与元素之间通过逗号间隔nil 作为数组元素存放的结束标志, 遇到nil之后, 之后的元素都不会放在数组中2 通过初始化方法创建数组        NSArray *arr2 = [[NSArray alloc] initWithObjects:str1, str2, str3, str4, str5, str6, nil];三 获取元素个数        NSUInteger count = [arr1 count];四 通过下边获取数组元素NSLog(@"%@", [arr2 objectAtIndex:0]);获取最后一个元素        NSLog(@"%@", [arr1 lastObject]); 通过给定元素获取数组中的下标        NSLog(@"%lu", [arr2 indexOfObject:str4]);判断是否包含给定元素        BOOL isExist = [arr1 containsObject:str5];        NSLog(@"isExist = %hhd", isExist);五数组排序        NSArray *sortArr = [arr2 sortedArrayUsingSelector:@selector(compare:)];        NSLog(@"%@", sortArr);六 快速遍历(快速枚举)for (NSString *str in arr2) {            NSLog(@"%@", str);        }forin快速枚举(快速遍历)用于将集合中的元素取出, 遍历出来type *object: type *数组中元素的类型, object是给对象起一个名字 , collection: 集合(也就是大容器, 数组, 字典, 集合)可变数组添加[arr addObject:book4];删除[arr removeObject:book1];查找        for (Book *book in arr) {            //获取到数组中的元素, 然后对比名字, 如果相同就输出名字            if ([[book name] isEqualToString:@"iOS高级编程"]) {                [book setPrice:1000];                NSLog(@"查找成功, name:%@, price:%.2f", [book name], [book price]);            }        }输出书籍清单(书名)        NSLog(@"%.2f", [book3 price]);        for (Book *book in arr) {            NSLog(@"%@", book);        }//重写从父类继承过来的description方法//当打印该类的对象时, 系统会自动调用该方法- (NSString *)description{    //%g可以忽略掉无用的0    return [NSString stringWithFormat:@"name:%@, author:%@, price:%g", _name, _author, _price];}数据类型转换//1 定义基本数据类型变量        char a = 'f';        int b = 103;        short c = 100;        long d = 1000;        float f = 10.23;        double e = 100.22222;        BOOL isTrue = YES;        //2 将基本数据类型转为NSNumber类型的对象        NSNumber *a1 = [NSNumber numberWithChar:a];        NSNumber *b1 = [NSNumber numberWithInt:b];        NSNumber *c1 = [NSNumber numberWithShort:c];        NSNumber *d1 = [NSNumber numberWithLong:d];        NSNumber *f1 = [NSNumber numberWithFloat:f];        NSNumber *e1 = [NSNumber numberWithDouble:e];        NSNumber *isTrue1 = [NSNumber numberWithBool:isTrue];        NSArray *arr = [NSArray arrayWithObjects:a1, b1, c1, d1, f1, e1, isTrue1, nil];        NSLog(@"%@", arr);        NSLog(@"%@, %@, %@, %@, %@, %@, %@", a1, b1, c1, d1, f1, e1, isTrue1);        //3 将NSNumber类型的对象转为基本数据类型        char a2 = [a1 charValue];        NSLog(@"%c", a2);        int b2 = [b1 intValue];        NSLog(@"%d", b2);        //4 NSNumber类型的对象比较        NSLog(@"%ld", [a1 compare:b1]);数组中的常见错误:was mutated while being enumerated.遇到这类错误的时候,是同时对同一个数组进行了操作解决方案:在对数组内容进行改变的时候,使用备份数组下面一个简单的出现这类错误的用法:        NSMutableArray * arrayTemp = xxx;           for (NSDictionary * dic in arrayTemp) {                    if (condition){                          [arrayTemp removeObject:dic];          }             }  应该改为:        NSMutableArray * arrayTemp = xxx;         NSArray * array = [NSArray arrayWithArray: arrayTemp];          for (NSDictionary * dic in array) {                    if (condition){                          [arrayTemp removeObject:dic];          }             }  

0 0