OC中的数组 字典 集合 OC对象与基本数据类型转换
2015-08-25 10:34 TemptationM 阅读(658) 评论(0) 收藏 举报一:数组
数组:
1> 不可变数组 NSArry 数组是一个大容易, 可以存放不同的对象, 而且, 数组元素必须是对象
2> 可变数组 NSMutableArray 是NSArry的子类
1⃣️ 不可变数组
*****************创建数组***************
第一种写法:
初始化写法: (利用系统自带的初始化方法)
NSArray *arr =[ [NSArray alloc] initWithObject : @“LanOu”, @“HeNan”, nil ];// nil是数组元素结束的标志
第二种写法:
便利构造器:
NSArray *arr1 = [NSArray arrayWithObject: @“LanOu”, @“HeNan”, nil];
第三种方法:
创建一个空数组对象
NSArry *arr2 = [NSArray array];
第四种:
把一个数组赋给另一个数组
NSArray *arr3 = [NSArray arrayWithArray : arr1];
第五种:
简易写法 (笑笑语法)
NSArray *array = @[@“22”, @“4”, @“ss”, @“0”];
****************获取数组中的元素*************
1> 获取元素个数
NSUInteger a = [array count];//此方法返回的是一个unsigned long
2> 获取数组中某个下标的元素
NSString *str = [array objectAtINdex : 0];//此方法返回的对象类型取决于这个数组元素的类型
3> 获取数组的首个元素
NSString *str2 = [array firstObject];//返回的可能是任何类型 取决于这个元素是何类型
4> 获取数组中的最后一个元素
NSString *last = [array lastObject];
****************是否包含某个元素*************
BOOL isExist = [array containsObject: @“1”];//返回的是一个BOOL类型
****************获取某个元素的下标*************
NSUInteger index = [array indexOfObject : @“22”];//返回值类型是unsigned long
****************在给定范围内查找字符串所在的下标*************
NSUInteger i = [array indexOfObject:@“22” inRang: NSMakeRang(0, 4)];//如果有重复的会返回第一个查找到的对应的元素下标
****************判断两个数组是否相等*************
BOOL isEqual = [arr1 isEqualToArray: arr2]; //判断两个对象是否相等(字符串, 数组) 除了数字
****************遍历数组*************
1> for循环
for(int i= 0; i< [array count]; i++)
2> 快速遍历数组
for in 在集合里面遍历元素, 每遇到一个对象元素就会把元素取出来, 执行for in 里面的语句, 知道集合里面没有对象为止 (这个遍历的元素可以是任何类型, 可以是字符串, 也可以是数组, 或者其它任何对象)
for (NSString *object in arr1) {
NSLog(@"%@", object);
NSLog(@"%@", object);
}
2⃣️可变数组
****************创建一个可变数组************
1> 初始化方法
NSMutableArray *muArr1 = [[NSMutableArray alloc] initWithCapacity: 2];
//最后的数组长度可以随便写(大于等于1), 在存放元素时, 如果不够, 数组会自动扩充
2> 便利构造器
NSMutableArray *muArr = [NSMutableArray arrayWithCapacity:1];
3> 创建一个空数组
NSMutableArray *muArr = [NSMutableArray array];
4> 在初始化数组时直接继承其他数组的元素
NSMutableArray *tem = [NSMutableArray arrayWithArray:arr];
****************添加数组元素************
1> 第一种 //把一个不可变数组中的元素添加到muArr中
[muArr addObjectsFromArray: array];
2> 第二种 //为muArr添加一个元素 在原有数组的最后添加一个元素
[muArr addObject:@“22”];
3> 第三种 //插入一个元素 在原有数组的指定下标处插入一个元素
[maArr insertObject:@“sb” atindex:1];
****************删除元素************
1> 删除最后一个元素
[muArr removeLastObject];
2> 删除指定下标的元素
[muArr removeObjectAtIndex:1];
3>删除指定范围的数组元素
[muArr removeObject:@"2" inRange:NSMakeRange(0, 3)];
4> 全部删除
[muArr removeAllObjects];
****************替换元素************
1>用给定的对象 替换指定下标的元素
[muArr replaceObjectAtIndex:0 withObject:@"hehe"];
2> 将两个下标的元素替换
[muArr exchangeObjectAtIndex:0 withObjectAtIndex:2];
****************数组排序************
1>
//对可变数组排序 操作的是可变数组的本身
[muArr sortUsingSelector:@selector(compare:)];
2> 复制一个排好序的可变数组给不可变数组
NSArray *sorteArr = [muArr sortedArrayUsingSelector:@selector(compare:)];
*********************************************分割线***************************************************
二 基本数据类型转换为OC中的对象类型 NSNumber
1> 利用OC对象方法装换 (将C语言中的数据类型转换为OC对象类型)
int a = 10;
NSNumber *num = [NSNumber numberWithInt:a];
2> 利用'语法糖’或'笑笑语法'
int b = 5;
NSNumber *numA = @3;//语法糖 ,笑笑语法
NSNumber *bb = @(b);
NSNumber *FF = @1.5;
3>OC数据类型转换为OC对象类型
NSInteger n = 12;
NSNumber *num1 = [NSNumber numberWithInteger:n];
NSNumber *fNum = [NSNumber numberWithFloat:12.5];
4> 将BOOL类型转换为OC对象类型
BOOL isTrue = YES;
NSNumber *value = [NSNumber numberWithBool:isTrue];
三 对象类型转换为基本数据类型
1> 对象类型转换位基本数据类型
NSNumber *numA = @3
NSNumber *FF = @1.5;
NSInteger nu = [numA integerValue];//对象转化那为基本整型
float f = [FF floatValue];//对象转换为浮点型
int a = [numA intValue];
2> 数组里面只能存放对象类型元素
NSArray *array4 = [NSArray arrayWithObjects:@2, @4, @5.2, nil];
**********************************分割线****************************************
三. 字典 存放的是一对key-value(键值对)
1> 用来存储以一一对应关系的数据类型
2> 一个value只对应多个key; 一个key能对应一个value
3> 无序的
不可变字典: 对象的创建
获取所有的key allKeys
获取所有value allValues
获取key对应的value objectForKey
遍历
不可变字典:对象创建
添加元素(键值对) setObject:ForKey:
添加元素(键值对) setObject:ForKey:
修改key对应的value
************************************不可变字典的创建*************************
1> 便利构造器
NSDictionary *dic = [NSDictionary dictionaryWithObject:@“XiaoQiang” forKey@“name”];
2> 初始化方法
NSDictionary *dic2 = [NSDictionary alloc] initWithObjectAndKeys:@“ZhangSan”, @“name”, @“Man”, @“gender”, @21, @“aeg”, nil];
****************不可变字典key的个数************
NSUInteger count = [dic2 count];
****************获取字典中的key对应value的值************
1> 方法一
NSString *name = [dic2 valueForKey:@"name"];
2> 方法二
NSString *obj = [dic2 objectForKey:@"name"];
3> 方法三
NSString *val = dic2[@"gender"];
****************获取字典中所有的key值************
NSArray *keys = [dic2 allKeys];
****************获取字典中所有的value值************
NSArray *values = [dic2 allValues];
********************************创建可变字典**************************************
可变字典 NSMutableDictionary
1> 初始化方法
NSMutableDictionary *mudic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"firday", @"week", @"10",
@"day", nil];
2> 便利构造器
NSMutableDictionary *muDic = [NSMutableDictionary dictionaryWithCapacity:10];
//字典长度可以随意设置(大于等于1) 若在存储时不够, 字典会自动扩充
3> 根据不可变字典复制而来
NSMutableDictionary *dd = [NSMutableDictionary dictionaryWithDictionary:dic];
****************添加键值对************
[muDic setObject:@“value”, forKey:@“key”];
****************修改已存在的key对应的value值************
[muDic setObject:@“123”, forKey:@“key”]
****************对字典的遍历************
for(id object in muDic)
{
NSLog(@“%@“, object);
}
/**********************集合*************************/
//集合(NSSet NSMutableSet)
/*
1> 无序性
2> 互异性(唯一性)
*/
//创建集合对象
NSSet *set = [[NSSet alloc] initWithObjects:@"0", @"2", @"4", @"2", @"1", nil];
NSLog(@"%@", set);
//获取集合的元素个数 count
NSLog(@"%lu", [set count]);
//获取集合中的元素 anyObject
NSString *str1 = [set anyObject];
NSLog(@"%@",str1);
NSString *str2 = [set anyObject];
NSLog(@"%@", str2);
NSString *str3 = [set anyObject];
NSLog(@"%@", str3);
NSArray *numbers = [set allObjects];
NSLog(@"%@", numbers);
//遍历集合元素
for (id obj in set) {
NSLog(@"%@", obj);
}
//可变集合 NSMutableSet
NSMutableSet *newSet = [NSMutableSet setWithCapacity:1];
//添加元素
[newSet addObject:@"new"];
[newSet addObject:@"old"];
//移除元素
[newSet removeObject:@"new"];
//移除所有元素
[newSet removeAllObjects];
//计数集合 NSCountedSet : NSMutableSet : NSSet
NSCountedSet *couSet = [[NSCountedSet alloc] initWithObjects:@"11", @"22", @"33", @"22", @"11", nil];
//计算元素出现的次数
NSUInteger num1 = [couSet countForObject:@"11"];
NSUInteger num2 = [couSet countForObject:@"22"];
NSLog(@"%lu, %lu", num1, num2);
/*总结
集合:
集合中的元素个数: count
对象创建: 初始化方法 便利构造器
forin (快速枚举(遍历))
数组: 遍历的是数组的元素
字典: 遍历的是字典的key
集合: 遍历的是集合的元素
NSArry : 有序的
NSDictionary : 无序的 一个key只能对应一个value; 一个value可以对应多个key
NSSet : 无序的 元素唯一性
//集合(NSSet NSMutableSet)
/*
1> 无序性
2> 互异性(唯一性)
*/
//创建集合对象
NSSet *set = [[NSSet alloc] initWithObjects:@"0", @"2", @"4", @"2", @"1", nil];
NSLog(@"%@", set);
//获取集合的元素个数 count
NSLog(@"%lu", [set count]);
//获取集合中的元素 anyObject
NSString *str1 = [set anyObject];
NSLog(@"%@",str1);
NSString *str2 = [set anyObject];
NSLog(@"%@", str2);
NSString *str3 = [set anyObject];
NSLog(@"%@", str3);
NSArray *numbers = [set allObjects];
NSLog(@"%@", numbers);
//遍历集合元素
for (id obj in set) {
NSLog(@"%@", obj);
}
//可变集合 NSMutableSet
NSMutableSet *newSet = [NSMutableSet setWithCapacity:1];
//添加元素
[newSet addObject:@"new"];
[newSet addObject:@"old"];
//移除元素
[newSet removeObject:@"new"];
//移除所有元素
[newSet removeAllObjects];
//计数集合 NSCountedSet : NSMutableSet : NSSet
NSCountedSet *couSet = [[NSCountedSet alloc] initWithObjects:@"11", @"22", @"33", @"22", @"11", nil];
//计算元素出现的次数
NSUInteger num1 = [couSet countForObject:@"11"];
NSUInteger num2 = [couSet countForObject:@"22"];
NSLog(@"%lu, %lu", num1, num2);
/*总结
集合:
集合中的元素个数: count
对象创建: 初始化方法 便利构造器
forin (快速枚举(遍历))
数组: 遍历的是数组的元素
字典: 遍历的是字典的key
集合: 遍历的是集合的元素
NSArry : 有序的
NSDictionary : 无序的 一个key只能对应一个value; 一个value可以对应多个key
NSSet : 无序的 元素唯一性
#warning: 在我们自定义类时, 不能用 NSString NSMutableString; NSArray NSMutableArray NSDictionary NSMutableDictionary; NSSet NSMutableSet NSCountedSet做父类, 因为这些类不是单一的一个类, 而是一个类族(多个类的组合)
浙公网安备 33010602011771号