您的位置:首页 > 其它

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

2014-08-07 23:02 155 查看
<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: