黑马程序员 OC语言 - 9 NSDictionary、NSMutableDictionary、NSNumber、NSDate、NSValue

来源:互联网 发布:网络电视直播手机版 编辑:程序博客网 时间:2024/06/05 07:55

若排版有错误,请查看PDF版:http://pan.baidu.com/s/1dDnHmDz



一、 NSDictionary、NSMutableDictionary

1.      字典

key----> value

索引 ----> 文字内容

1)     字典里面存储的东西都是键值对

2)     字典不允许有相同的key,但允许有相同的value(Object)

3)     字典是无序的

 

2.      NSDictionary(不可变字典)的创建

1)     方法1:

    NSDictionary *dict = [NSDictionarydictionaryWithObject:@"jack" forKey:@"name"];

   

2)     方法2:

    NSArray *keys = @[@"name",@"address"];

    NSArray *objects = @[@"jack",@"北京"];

    NSDictionary *dict = [NSDictionarydictionaryWithObjects:objects forKeys:keys];

   

3)     方法3:

    NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:

     @"jack", @"name",

     @"北京",@"address",

     @"32423434", @"qq", nil];

   

4)     方法4:(常用)

NSDictionary *dict = @{@"name" :@"jack",@"address" :@"北京"};

 

3.      NSMutableDictionary(可变字典)的创建

NSMutableDictionary *dict =[NSMutableDictionary dictionary];

// 添加键值对

[dict setObject:@"jack" forKey:@"name"];

// 移除键值对

[dictremoveObjectForKey:<#(id)#>];

 

4.      取出字典里的内容

id obj = [dict objectForKey:@"name"];

id obj = dict[@"name"];

 

NSLog(@"%ld", dict.count); // 返回的是键值对的个数

 

5.      遍历字典

NSDictionary *dict = @{

                           @"address" :@"北京",

                           @"name" :@"jack",

                           @"name2" :@"jack",

                           @"name3" :@"jack",

                           @"qq" :@"7657567765"

                                   };

 

1)     方法1:

    NSArray *keys = [dict allKeys];

    for (int i =0; i<dict.count; i++)

    {

        NSString *key = keys[i];

       NSString *object = dict[key];

 

        NSLog(@"%@ = %@", key, object);

    }

 

2)     方法2:(常用)

    [dict enumerateKeysAndObjectsUsingBlock:

     ^(id key, id obj, BOOL *stop) {

         NSLog(@"%@ - %@", key, obj);

         // *stop = YES; 停止遍历

     }];

 

6.      数组与字典嵌套

NSArray *persons = @[

    @{@"name" :@"jack",@"qq" :@"432423423",@"books":@[@"5分钟突破iOS编程",@"5分钟突破android编程"]},

    @{@"name" :@"rose",@"qq" :@"767567"},

    @{@"name" :@"jim",@"qq" :@"423423"},

    @{@"name" :@"jake",@"qq" :@"123123213"}

                         ];

 

NSDictionary *jim = persons[2];

NSString *bookName =persons[0][@"books"][1];//先取出0位置对应的字典,再取出字典中books这个key对应的数据,再取出元素

NSArray *array = persons[0][@"books"];

NSLog(@"%@", persons[1][@"qq"]);

 

二、 NSNumber

1.       将各种基本数据类型包装成NSNumber对象

    NSArray *array = @[

                       @{@"name" :@"jack",@"age" :@20},

                       @{@"name" :@"rose",@"age" :@25},

                       @{@"name" :@"jim",@"age" :@27}

                         ]

    @10.5;

    @20;

    @YES;

    @'A'; // NSNumber对象

    @"A"; // NSString对象

          

2.       将age变量包装成NSNumber对象

    int age = 100;

    @(age);

    //[NSNumbernumberWithInt:age];

    NSNumber *n = [NSNumbernumberWithDouble:10.5];

           

3.       将对象转成基本数据类型

    int d = [n doubleValue];

    NSLog(@"%d, %@", d, n);// 10, 10.5

 

    int a = 20;

    // @"20"

    NSString *str = [NSStringstringWithFormat:@"%d", a];

NSLog(@"%d", [strintValue]);// 20

 

三、 NSDate

1.       创建一个时间对象

     NSDate *date1 = [NSDatedate];

      NSLog(@"%@", date1);// 2014-08-24 10:59:08 +0000打印出的时候是0时区的时间(北京-8区)

   

      NSDate *date2 = [NSDatedateWithTimeInterval:5sinceDate:date1];

      NSLog(@"%@", date2);// 2014-08-24 10:59:13+0000

      // 1970开始走过的秒数

      NSTimeInterval seconds = [date1timeIntervalSince1970];

      NSLog(@"%f", seconds);// 1408877948.974812

                   

2.       将NSDate换成字符串输出,时间为北京时间

      // 日期格式化类

      NSDateFormatter *formatter1 = [[NSDateFormatteralloc]init];

      formatter1.dateFormat = @"yyyy-MM-ddHH:mm:ss"; // y  M  d  H24)时 h12)时  m  s

      NSString *str = [formatter1stringFromDate:date1];// NSDate换成字符串输出

      NSLog(@"%@", str);// 2014-08-24 18:59:08

                       

3.       将字符串转换成NSDate输出

      NSString *time = @"2011/09/1018:56";

      NSDateFormatter *formatter2 = [[NSDateFormatteralloc]init];

      formatter2.dateFormat = @"yyyy/MM/ddHH:mm"; // 格式要和time相同,否则nill

      NSDate *date3 = [formatter2dateFromString:time];

      NSLog(@"%@", date3);// 2011-09-10 10:56:00+0000

 

四、 NSValue

NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue

 

1.       将结构体装成OC对象

// 将结构体转为Value对象

      CGPoint p = CGPointMake(10, 10);

      NSValue *value = [NSValuevalueWithPoint:p];

      NSLog(@"%@", value);// NSPoint: {10, 10}

   

      // value转为对应的结构体

  CGPoint p2 = [value pointValue];

 

2.       将对象存入数组

      NSArray *array = @[value];

      NSLog(@"%@", array);// ("NSPoint: {10,10}")

 


0 0
原创粉丝点击