【黑马程序员】-Foundation框架-集合及其它

来源:互联网 发布:现代散文鉴赏辞典知乎 编辑:程序博客网 时间:2024/05/17 08:26

-------<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>、期待与您交流! ----------

0 0