OC--Foundation-NSDictionary,NSNumber,NSDate,NSValue



一、NSDictionary
字典
NSDictionary\NSMutableDictionary
* 无序
* 快速创建(不可变):@{key1 : value1,  key2 : value2}
* 快速访问元素:字典名[key]


     key ----> value
     索引 ----> 文字内容
    
里面存储的东西都是键值对

1.创建
    
 NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
  NSArray *keys = @[@"name", @"address"];
     NSArray *objects = @[@"jack", @"北京"];
     NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
     


 
   NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
     @"jack", @"name",
     @"北京", @"address",
     @"32423434", @"qq", nil];



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


2.取出
id obj = [dict objectForKey:@"name"];

id obj = dict[@"name"];
    

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


3.添加键值对(NSMutableDictionary可变)

     NSMutableDictionary *dict = [NSMutableDictionary dictionary];
   
    [dict setObject:@"jack" forKey:@"name"];
   
    [dict setObject:@"北京" forKey:@"address"];
   
    [dict setObject:@"rose" forKey:@"name"];


4.移除键值对
[dict removeObjectForKey:<#(id)#>];
    

5.遍历
字典不允许有相同的key,但允许有相同的value(Object)
字典的无序的

 NSDictionary *dict = @{
    @"address" : @"北京",
    @"name" : @"jack",
    @"name2" : @"jack",
    @"name3" : @"jack",
    @"qq" : @"7657567765"};
     NSArray *keys = [dict allKeys];
  /*-----------------------遍历---方式1----------------------------  */
       for (int i = 0; i<dict.count; i++)
        {
            NSString *key = keys[i];
            NSString *object = dict[key];
    
    
            NSLog(@"%@ = %@", key, object);
        }
/*----------------------------方式2---------------------------------*/
[dict enumerateKeysAndObjectsUsingBlock:
     ^(id key, id obj, BOOL *stop) {
         NSLog(@"%@ - %@", key, obj);
        
         // *stop = YES;
     }];



6.取值
NSLog(@"%@", persons[1][@"qq"]);
先取出1位置对应的字典
再取出字典中qq这个key对应的数据


二、NSNumber
包装

生成
 NSNumber *num = [NSNumber numberWithInt:10];

转成NSNumber型: 
// short型→NSNumber型
 NSNumber *num = [NSNumber numberWithShort:32767]; 

// int型→NSNumber型
 NSNumber *num = [NSNumber numberWithInt:2147483647]; 

// long型→NSNumber型
NSNumber *num = [NSNumber numberWithLong:2147483647];

 // float型→NSNumber型
 NSNumber *num = [NSNumber numberWithFloat:42.195f];

// double型→NSNumber型
 NSNumber *num = [NSNumber numberWithDouble:3.1415f]; 

// BOOL型→NSNumber型
 NSNumber *num = [NSNumber numberWithBool:YES]; 

// char型→NSNumber型
 NSNumber *num = [NSNumber numberWithChar:a];


NSNumber型转为NSString型:(同理,short/int/long/float/bool/char Value) 
NSString *str = [num stringValue]; 

NSNumber型是否相同的比较:
BOOL b = [num1 isEqualToNumber:num2]; 

NSNumber型大小的比较:
 NSComparisonResult c = [num1 compare:num2];


三、NSDate
创建一个时间对象 
NSDate *date = [NSDate date];

打印出的时候是0时区的时间(北京-东8区)
NSLog(@"%@", date); 
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date]; 

从1970开始走过的秒数 
NSTimeInterval seconds = [date2 timeIntervalSince1970]; 
[date2 timeIntervalSinceNow];

格式

NSDate *date = [NSDate date]; 

// 日期格式化类
 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 

// y 年 M 月 d 日 

// m 分 s 秒 H (24)时 h(12)时 

formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 

NSString *str = [formatter stringFromDate:date];

 NSLog(@"%@", str);


给定一个字符串使其按格式打印
NSString *time = @"2011/09/10 18:56"; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 

ormatter.dateFormat = @"yyyy/MM/dd HH:mm";

 NSDate *date = [formatter dateFromString:time]; 

NSLog(@"%@", date);


四、NSValue

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

// 结构体--->OC对象
 CGPoint p = CGPointMake(10, 10);

// 将结构体转为Value对象 

NSValue *value = [NSValue valueWithPoint:p]; 

// 将value转为对应的结构体 

// [value pointValue]; 

NSArray *array = @[value ];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值