OC学习(五)不可变数组类,可变数组类及数值类

3 篇文章 0 订阅
1 篇文章 0 订阅
<span style="font-size:18px;">今天主要学习了不可变数组类,可变数组类及数值类中的部分常用方法,下面是我对今天学习的简要总结

我们为什么要学习OC的数组,下面就是数组的几个方面的价值:
(1)存储多个元素.
(2)存储元素只能是对象,对象可以是不同类型. 
(3)数组是一个有序的集合. 
(4)数组中的元素可以重复,而且重复的对象会成为数组元素.

不可变数组类的部分常用方法:
1.创建数组对象
(1)使用便利构造器
 arrayWithObjects 创建对象时可以指定多个对象元素,元素与元素之间通过逗号进行间隔
 //nil 作为数组元素存放的结束标志,遇到 nil 之后的元素,都不会放入数组
 NSArray *arr1 = [NSArray arrayWithObjects:@"aa", @"bb", @"cc", nil];
 NSLog(@"arr1 = %@", arr1);
(2)使用初始化方法
 NSArray *arr2 = [[NSArray alloc] initWithObjects:@"aa", @"bb", @"cc", @"aa", 
 @"bb", @"cc", nil];
 NSLog(@"arr2 = %@", arr2);
2.获取元素个数
 NSUInteger count = [arr1 count];
 NSLog(@"%lu", count);
3.根据索引值获取对象
(1)获取指定下标对应的元素
 NSString *str1 = [arr1 objectAtIndex:1];
 NSLog(@"%@", str1);
(2)获取数组中的第一个元素
 //firstObject 与 lastObject 方法比 objectAtIndex: 方法好在当数组元素为空时,会返回nil,
 // 而 objectAtIndex: 则会造成程序crash.(超出下标范围)
 NSString *str2 = [arr1 firstObject];
 NSLog(@"%@", str2);
(3)获取数组中的最后一个元素
 NSString *str3 = [arr1 lastObject];
 NSLog(@"%@", str3);
4.获取对象在数组中的索引值
 NSUInteger index = [arr1 indexOfObject:@"dd"];
 NSLog(@"%lu", index);
5.判断是否包含某个对象
 BOOL isExist = [arr1 containsObject:@"Frank"];
 NSLog(@"%d", isExist);
6.数组排序(最简单版)
 NSArray *sortArr = [arr2 sortedArrayUsingSelector:@selector(compare:)];
 NSLog(@"%@", sortArr);
7.快速遍历(快速枚举)
 for (NSString *str in arr2) {
     NSLog(@"%@", str);
 }

和已经学过的可变字符串类与不可变字符串类一样,可变数组类也是继承于不可变数组类.因此,上面介绍的
方法及不可变数组类的其他方法可变数组就可以用,下面介绍一些可变数组类独有的部分方法:
前提:建立一个书籍类(Book),包括实例变量书名,作者,价格,方法需要有书名和价格的设置器和访问器,自定义初始化,及
重写的description

1.先创建几本书
 Book *book1 = [[Book alloc] initWithName:@"IOS初级编程" author:@"Frank" price:20.0];
 Book *book2 = [[Book alloc] initWithName:@"IOS中级编程" author:@"Frank" price:25.0];
 Book *book3 = [[Book alloc] initWithName:@"IOS高级编程" author:@"Frank" price:30.0];
2.存储在数组中
 NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:book1, book2, book3, nil];
3.添加一本书,添加终极
 Book *book4 = [[Book alloc] initWithName:@"IOS终级编程" author:@"Frank" price:30.0];
 [arr addObject:book4];
4.删除一本书,删除初级
 [arr removeObject:book1];
5.通过书名查找对应的书
 for (Book *book in arr) {
 //获取到数组中的元素,然后对比名字,如果相同就输出名字
 if ([[book name] isEqualToString:@"IOS高级编程"]){
      NSLog(@"查找成功");
      NSLog(@"%@", [book name]);
      [book setPrice:20.0];
    }
 }
 NSLog(@"%.2f", [book3 price]);
6.输出书籍清单
//重写的description方法实现如下
//- (NSString *)description
//{
//    return [NSString stringWithFormat:@"%@ %@ %g", _name, _author, _price];
//}

 for (Book *book in arr) {
      NSLog(@"%@", book);
 }


数值类方法不是特别常用,简单的介绍几种:

1.定义基本数据类型变量
 char a = 'k';
 int b = 108;
 float e = 2.25;
 BOOL isTrue = YES;
2.将基本数据类型转为NSNumber类型的对象
 NSNumber *a1 = [NSNumber numberWithChar:a];
 NSLog(@"%@", a1);
 NSNumber *b1 = [NSNumber numberWithInt:b];
 NSLog(@"%@", b1);
 NSNumber *c1 = [NSNumber numberWithFloat:c];
 NSLog(@"%@", c1);
 NSNumber *isTrue1 = [NSNumber numberWithBool:isTrue];
 NSLog(@"%@", isTrue1);
 NSArray *arr = [NSArray arrayWithObjects:a1, b1, c1, isTrue1, nil];
 NSLog(@"%@", arr);
3.将NSNumber类型的对象转为基本数据类型,取两个比较特殊的
 char a2 = [a1 charValue];
 NSLog(@"%c", a2);
 BOOL isTrue2 = [isTrue1 boolValue];
 NSLog(@"%d", isTrue2);
4.NSNumber类型的比较
 NSLog(@"%ld",  [a1 compare:b1]);</span>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值