1. NSArray
OC中的数组:相当于容器,里面装的是ObjC对象,一旦创建,不可改变,数组是有序集合,只能存放对象
iOS中存放数据的容器类叫做集合
1.1 创建不可变数组:
#pragma mark----不可变数组
{
// 1. 创建空数组
NSArray *array = [NSArray array];// 这样创建是无意义的
// 2. 创建数组 一个元素
NSArray *array1 = [NSArray arrayWithObject:@"1"];
// 3. 创建数组,多个元素
NSArray *array2 = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
// 4. 创建数组,使用对象方法
NSArray *array3 = [[NSArray alloc] initWithObjects:@"four", @"five", nil];
// 5. 使用一个数组创建另一个数组
NSArray *array4 = [NSArray arrayWithArray:array2];
NSLog(@"%@",array);
NSLog(@"%@",array1);
NSLog(@"%@",array2);
NSLog(@"%@",array3);
NSLog(@"%@",array4);
}
1.2 不可变数组的常用方法:
#pragma mark-------不可变常用方法
{
NSArray *arr = [NSArray arrayWithObjects:@"one", @"two", @"three", [NSNull null],nil];
NSLog(@"%@",arr);
// 1. 获取数组元素个数
NSLog(@"%ld", arr.count);
// 2. 根据下标获取对应元素
NSLog(@"%@", [arr objectAtIndex:1]);
// 3. 返回元素的下标
NSUInteger a = [arr indexOfObject:@"three"];// 方法返回值是NSUInteger
NSLog(@"%lu",a);
// 4. 判断数组中是否包含了某个元素
if ([arr containsObject:@"five"]) { // 该方法返回值为BOOL
NSLog(@"yes");
}else{
NSLog(@"no");
}
}
1.3 简化使用方法:
#pragma mark-------简化用法
{
// 1. 简化创建
NSArray *arr = @[@"one", @"two", @"three"];
NSLog(@"%@",arr);
// 2. 简化访问数组元素
NSString *str = [arr objectAtIndex:2];
NSLog(@"%@",str);
str = arr[0];
NSLog(@"%@",str);
}
1.4 数组遍历:
#pragma mark-------数组遍历
{
NSArray *array = @[@"1", @"2", @"3", @"4"];
// 1. 第一种遍历
for (int i = 0; i < array.count; i++) {
NSLog(@"%@",array[i]);
}
// 2. 第二种遍历---快速枚举法
for (NSString *obj in array) {
NSLog(@"%@",obj);
}
// 3. 第三种方式:block
// obj:数组元素 idx:数组下标 stop:是否停止的条件
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"下标 = %lu, %@", idx, obj);
}];
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if(idx == 2){
*stop = YES;
}else{
NSLog(@"下标 = %lu, %@", idx, obj);
}
}];
}
打印结果:
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 0, 1
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 1, 2
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 2, 3
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 3, 4
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 0, 1
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 1, 2
Unix终端命令大全:http://wiki.ubuntu.org.cn/Unix%E5%91%BD%E4%BB%A4%E5%A4%A7%E5%85%A8
1.5 可变数组:
#pragma mark-------可变数组
{
// 1. 创建空数组---是有意义滴,因为你可以添加
NSMutableArray *array = [NSMutableArray array];
[array addObject:@"1"];
NSLog(@"%@", array);
// 2. 创建数组,初始化单个元素
NSMutableArray *arr1 = [NSMutableArray arrayWithObject:@"2"];
// 3. 创建数组,初始化多个元素
NSMutableArray *arr2 = [NSMutableArray arrayWithObjects:@"3", @"4", @"5", @"6", @"7", nil];
// 4. 创建数组,指定数组长度
NSMutableArray *arr3 = [NSMutableArray arrayWithCapacity:5];
// arr3 = [NSMutableArray arrayWithObjects:@"10", @"9", @"8", @"7", @"6", nil];
// 简化初始化:从0开始赋值
arr3[0]=@"10";
arr3[1]=@"9";
arr3[2]=@"8";
arr3[3]=@"7";
arr3[4]=@"6";
// 1. 增
[array addObject:@"2"];
NSLog(@"%@",array);
// 2. 插入
[arr1 insertObject:@"4" atIndex:0];
NSLog(@"%@", arr1);
//3. 删除
[arr2 removeLastObject];
NSLog(@"%@", arr2);
[arr2 removeObjectAtIndex:0];
NSLog(@"%@", arr2);
[arr2 removeObject:@"4"];
NSLog(@"%@",arr2);
// 4. 替换
[arr3 replaceObjectAtIndex:0 withObject:@"1"];
NSLog(@"%@",arr3);
// 5. 查找元素:
NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:@3, @4, @5, @6, @7, nil];
BOOL r = [arr4 containsObject:@6];
NSLog(@"%d",r);
// 6. 交换元素:
[arr4 exchangeObjectAtIndex:0 withObjectAtIndex:4];
NSLog(@"%@",arr4);
/*
可变数组使用以下创建方法:NSArray *arr = @[@"one", @"two", @"three"];
则系统默认为不可变数组,如果对其进行修改,会出问题
*/
}
1.6 读写文件
#pragma mark-------读写文件
{
读写文件 首先写文件:
创建数组---保存到文件中plist,plist是一种特殊的文件格式---
NSArray *array = @[@"1", @"2", @"3", @"4", @"5"];
BOOL isWrite = [array writeToFile:@"/Users/lanou3g/Desktop/array.plist" atomically:YES];
if (isWrite) {
NSLog(@"写入成功");
}else
NSLog(@"写入失败");
NSArray *readArray = [NSArray arrayWithContentsOfFile:@"/Users/lanou3g/Desktop/array.plist"];
NSLog(@"%@",readArray);
}
1.7 NSNumber
#pragma mark-------NSNumber
{
/* NSNumber是ObjC中处理数值的一个类
NSNumber可以把基本数据类型转换为对象,然后就可以方法数组或者字典中
int,float,double --- object
*/
int a = 10;
float b = 10.2;
double c = 10.4;
NSMutableArray *arr = [NSMutableArray array];
// 将C语言中的类型转换为对象:
NSNumber *numa = [NSNumber numberWithInt:a];
NSNumber *numb = [NSNumber numberWithFloat:b];
NSNumber *numc = [NSNumber numberWithDouble:c];// 封装成对象了
// 简化方法:
NSNumber *d = @1;
<pre name="code" class="objc"><pre name="code" class="objc"> [arr addObject:numa];
[arr addObject:@(b)];
[arr addObject:numb];
[arr addObject:numc];
NSLog(@"%@",arr);
}