-------<a href="http://www.itheima.com"target="blank">android培训</a>、<a href="http://www.itheima.com"target="blank">java培训</a>、期待与您交流! ----------
一、NSDictionary/NSMutableDictionary
1、NSDictionary不可变字典
基本创建类型及其获取:
//创建一个字典对象,不可变
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
id obj = [dic objectForKey:@"name"]; //查找对象
//快速创建字典方式,注意字典中的对象也是无序的
NSDictionary *dic1 = @{@"name":@"jack", @"address":@"北京"};
id obj1 = dic[@"name"]; //快速提取对象
NSArray *key1 = @[@"name", @"address"];
NSArray *value1 = @[@"jack", @"北京"];
NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:value1 forKeys:key1];
字典中的数据都是以键值对存储的,因此里边的数据都是成对存在的。在字典中不允许有相同的key,但是可以有相同的value。
2、NSMutableDictionary
基本创建类型:
NSMutableDictionary *dic2 = [NSMutableDictionary dictionary];
[dic2 setObject:@"jack" forKey:@"name"]; //添加字典内容
[dic2 setObject:@"rose" forKey:@"name"]; //会覆盖掉之前的jack
NSLog(@"%@", dic2[@"name"]); //输出是rose
[dic2 removeObjectForKey:@"name"]; //删除字典元素
3、字典遍历
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSArray *key1 = @[@"name", @"address", @"qq"];
NSArray *value1 = @[@"jack", @"北京", @"234928340"];
NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:value1 forKeys:key1];
//遍历方法1
NSArray *keys = [dic3 allKeys]; //获取字典的所有关键字的方法
for (int i = 0; i <dic3.count; i++) {
NSString *key = keys[i];
NSString *value = dic3[key];
NSLog(@"%@ - %@", key, value);
}
//遍历方法2
[dic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@ - %@", key, obj);
}];
return 0;
}
二、集合总结
(1)NSArray/NSMutableArray
*有序;
*快速创建方式:@[ ];(不可变)
*快速访问方式:数组名[ ]
(2)NSSet/NSMutableSet
*无序
(3)NSDictionary/NSMutableDictonary
*无序
*快速创建方式为:@{ };(不可变字典)
*快速访问方式:字典名[key]
(4)数组中可以包含字典
例如创建一个数组:
NSArray *person = @[@{@"name":@"jack"}, {@"address":@"北京"}, {@"qq":@"239847982"}];
NSString *p1Name = person[1][@"address"]; //提取数组中字典的元素
三、NSNumber:存放基本数据类型(只能包装数字)。
由于在数组中存储的数据都是oc对象,所以当要想将基本数据类型存到数组中时应该怎么办?NSNumber可以对数字类型进行封装,然后装到数组中。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSNumber *num = [NSNumber numberWithInt:20];
NSNumber *num1 = [NSNumber numberWithChar:'a'];
//定义一个数组,要求传入年龄
NSArray *array = @[num, num1]; //传入两个NSNumber
NSLog(@"%@", array);
NSDictionary *dic = @{@"name":@"jack", @"age":num};
NSDictionary *dic2 = @{@"name":@"jack", @"age":@20}; //快速创建出NSNumber类型
//快速取出字典中的数字
NSNumber *num2 = dic[@"age"];
int a = [num2 intValue]; //将数据转换成int型
NSLog(@"%d", a);
return 0;
}
注意:@'a':表示NSNumber对象,@"a":表示NSString对象
四、NSDate存放时间
基本定义形式
//NSDate创建
NSDate *date = [NSDate date]; //时间是调用这条指令时的时间,而且是格林时间。
//5表示的时5秒
NSDate *date1 = [NSDate dateWithTimeInterval:5 sinceDate:date];
int a = [date1 timeIntervalSince1970]; //计算从1970年到date1一共有多少秒
日期格式化:
//创建一个时间格式对象
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//规定时间的输出格式
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//将时间转换成字符串
NSString *str = [formatter stringFromDate:date1];
//输出时间字符串
NSLog(@"%@", str);
五、NSValue
其实NSNubmber继承NSValue,相对于NSNumber,NSValue拥有包装的范围更广,包括结构体、指针等。
-------<a href="http://www.itheima.com"target="blank">android培训</a>、<a href="http://www.itheima.com"target="blank">java培训</a>、期待与您交流! ----------