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

若排版有错误,请查看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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值