黑马程序员--Objective-C——Foundation框架二

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、其他集合类

前面我们学习了NSArray, 集合类还有两个常用的类,NSSetNSDictionary

 

1. NSSetNSMutableSet

NSString不同,NSSet里面的对象没有顺序。

NSSet基本使用方法:

<span style="background-color: rgb(255, 255, 255);">NSSet *s = [NSSet set];
// 创建
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
    
// 随机拿出一个元素
NSString *str =  [s2 anyObject];
    
// 输出每个元素
NSLog(@"%@", str);
    
// 元素个数
NSLog(@"%ld", s2.count);</span>


NSMutableSet的使用:

添加元素:[s addObject:];

删除元素:[s removeObject:];

 

2. NSDictionaryNSMutableDictionary

Dictionary的英文意思是“字典”,字典是通过索引找到相应的字,NSDictionary也一样,NSDictionary里面的每个对象都有一个key,要找到某个对象,只需知道它的key值。和NSSet一样,字典是无序的。

1)NSDictionary的基本使用:

<span style="background-color: rgb(255, 255, 255);">// 创建单个对象
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
    
// 通过键集合数组和值集合数组创建
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"北京"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
    
// 创建多个对象,注意使用nil结束
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
<span style="white-space:pre">					</span>@"jack", @"name",
<span style="white-space:pre">					</span>@"北京", @"address",
<span style="white-space:pre">					</span>@"32423434", @"qq", nil];
    
// 快速创建方法
 NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
    
// 访问对象
 id obj = [dict objectForKey:@"name"];

// 快速访问对象
id obj = dict[@"name"];
    
NSLog(@"%@", obj);
    
// 返回的是键值对的个数
NSLog(@"%ld", dict.count);</span>

2)NSMutableDictionary的基本使用:

<span style="background-color: rgb(255, 255, 255);">NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    
// 添加键值对
[dict setObject:@"jack" forKey:@"name"];
[dict setObject:@"北京" forKey:@"address"];
 
// 为相同的key添加对象会覆盖原来的对象
[dict setObject:@"rose" forKey:@"name"];
    
// 移除键值对
[dict removeObjectForKey:<#(id)#>];
 
// 错误写法,@{}创建的是不可变字典
NSMutableDictionary *dict2 = @{@"name" : @"jack"};
[dict2 setObject:@"rose" forKey:@"name"];

// 直接输出字典
NSLog(@"%@", dict);</span>
 

直接输出字典:

 

 

3)字典的遍历:

<span style="background-color: rgb(255, 255, 255);">NSDictionary *dict = @{
    @"address" : @"北京",
    @"name" : @"jack",
    @"name2" : @"jack",
    @"name3" : @"jack",
    @"qq" : @"7657567765"};
  
// 使用for循环遍历
// 取出所有Key
NSArray *keys = [dict allKeys];
for (int i = 0; i<dict.count; i++)
{
           NSString *key = keys[i];
           NSString *object = dict[key];
            NSLog(@"%@ = %@", key, object);
}
   
// 使用Block遍历,用法和数组Block遍历类似
[dict enumerateKeysAndObjectsUsingBlock:
     ^(id key, id obj, BOOL *stop) {
         NSLog(@"%@ - %@", key, obj);
	 // 停止遍历
         *stop = YES;
}];</span>


二、NSNumberNSValue


1.NSNumber

NSNumber用于包装int对象,使基本数据类型能够放入集合类中。

NSNumber基本使用:

<span style="background-color: rgb(255, 255, 255);">// 包装基本数据类型
NSNumber *num = [NSNumber numberWithInt:10];</span>
<span style="background-color: rgb(255, 255, 255);">// 放入集合对象
NSDictionary *dict =  @{
    @"name" : @"jack",
    @"age" : num
};</span>
<span style="background-color: rgb(255, 255, 255);">// 取出NSNumber对象
NSNumber *num2 = dict[@"age"];
    
// 转换成基本数据类型
int a = [num2 intValue];
    
NSLog(@"%d" , a);</span>

<span style="background-color: rgb(255, 255, 255);">// 快速包装,@20会自动将@后面的基本数据类型包装成OC对象       
NSArray *array = @[
    @{@"name" : @"jack", @"age" : @20},
    @{@"name" : @"rose", @"age" : @25},
    @{@"name" : @"jim", @"age" : @27}
];
 
// 将变量包装成NSNumber对象
int age = 100;
@(age);</span>

2.NSValue

NSValueNSNumber的父类,可以包装所有的基本数据类型。

NSValue的基本使用:

<span style="background-color: rgb(255, 255, 255);">CGPoint p = CGPointMake(10, 10);
// 将结构体包装成Value对象
NSValue *value = [NSValue valueWithPoint:p];
    
// 将value转为对应的结构体
[value pointValue];</span>


三、NSDate


之前我们使用结构体代表日期。使用NSDate对象表示日期的好处是,能为对象增加方法。

1.NSDate的基本使用

<span style="background-color: rgb(255, 255, 255);"> // 创建一个时间对象
NSDate *date = [NSDate date];
// 打印出的时候是0时区的时间
NSLog(@"%@", date);
    
// 使用时间间隔创建
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
    
// 从1970开始走过的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
 
// 从date到现在经过的时间
[date2 timeIntervalSinceNow];</span>


2.日期格式化类

<span style="background-color: rgb(255, 255, 255);">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];
 
// 字符串转换为格式化日期
NSString *time = @"2015/01/27 15:32";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);</span>




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值