您的位置:首页 > 编程语言 > C语言/C++

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

2014-08-30 16:55 555 查看
若排版有错误,请查看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]
c0bb
;
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日 
H(24)时 h(12)时 
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}")

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐