OC连载四-----Foundation框架——字典、日期、异常

/*******************NSDictionary************************/

        // 初始化一个字典
       
NSDictionary *dic = [[ NSDictionary alloc ] initWithObjectsAndKeys : @"value" , @"key" , @"value1" , @"key1" , nil ];
       
NSLog ( @"dic is %@" , dic);
       
       
// 创建空的字典
       
NSDictionary *nulldic = [ NSDictionary dictionary ];
       
NSLog ( @"nulldic is %@" , nulldic);
       
       
// 创建 Person 对象
       
Person *zhangsan = [[ Person alloc ] init ];
        zhangsan.
name = @" 张三 " ;
        zhangsan.
age = 100 ;
       
       
Person *lisi = [[ Person alloc ] init ];
        lisi.
name = @" 李斯 " ;
        lisi.
age = 200 ;
       
       
Person *wangwu = [[ Person alloc ] init ];
        wangwu.
name = @" 王武 " ;
        wangwu.
age = 300 ;
       
       
       
// 创建一个数组
       
NSArray *names = @[ zhangsan, lisi, wangwu ] ;
       
NSDictionary *dic2 = [ NSDictionary dictionaryWithObjectsAndKeys : @"v1" , @"k1" , @"v2" , @"k2" , @"v3" , @"k3" , names, @"k4" , nil ];
       
NSLog ( @"dic2 is %@" , dic2);
       
       
// 从字典中取值,若 key 值不存在,则返回 null
       
NSString *str1 = [dic2 objectForKey : @"k1" ];
       
NSString *str2 = [dic2 objectForKey : @"k2" ];
       
NSString *str3 = [dic2 objectForKey : @"k5" ];
       
NSLog ( @"str1 is %@" , str1);
       
NSLog ( @"str2 is %@" , str2);
       
NSLog ( @"str3 is %@" , str3);
       
       
// 取出字典中的数组的第一个元素的姓名
//        NSArray *arr = [dic2 objectForKey:@"k4"];
//        Person *ps = [arr objectAtIndex:0];
       
// 嵌套调用
       
Person *ps = [[dic2 objectForKey : @"k4" ] objectAtIndex : 0 ];
       
NSLog ( @"ps name is %@" , ps. name );
       
       
// 字典中键值对个数
       
NSInteger count = dic2. count ;
       
NSLog ( @"count is %ld" , count);
       
       
       
// 取出字典中所有的 key
       
NSArray *keys = [dic2 allKeys ];
       
NSLog ( @"keys is %@" , keys);
       
       
       
// 取出字典中所有的 value
       
NSArray *values = [dic allValues ];
       
NSLog ( @"values is %@" , values);
       
       
       
// 字典的快速创建和取值
       
NSDictionary *dic3 = @{ @"k1" : @"v1" , @"k2" : @"v2" , @"k1" : @"v1" , @"k1" : @"v1" , } ;
       
NSString *v1 = dic3[ @"k1" ];
       
NSLog ( @"dic3 is %@" , dic3);
        NSLog(@"v1 is %@", v1);

        /******************NSMutableDictionary***************************/
       
       
// 初始化空的字典
       
NSMutableDictionary *dic1 = [ NSMutableDictionary dictionary ];
       
       
// 给字典预期的空间
       
NSMutableDictionary *dic2 = [ NSMutableDictionary dictionaryWithCapacity : 10 ];
       
       
// 添加元素
        [dic1
setObject : @"v1" forKey : @"k1" ];
        [dic1
setObject : @"v2" forKey : @"k2" ];
        [dic1
setObject : @"v3" forKey : @"k3" ];
        [dic1
setObject : @"v4" forKey : @"k4" ];
       
NSLog ( @"dic1 is %@" , dic1);
       
       
// 设置键值对 , key 已存在,则是修改 key 对应的 value ,如果不存在,则创建一个新的键值对
        [dic1
setObject : @"v5" forKey : @"k3" ];
       
NSLog ( @"dic1 is %@" , dic1);
       
       
       
// 删除元素
        [dic1
removeObjectForKey : @"k3" ];
       
NSLog ( @"dic1 is %@" , dic1);
       
       
// 删除所有元素
        [dic1
removeAllObjects ];
       
NSLog ( @"dic1 is %@" , dic1);
       
       
       
// 字典的遍历
       
NSDictionary *dic = @{ @"k1" : @"v1" ,
                             
@"k2" : @"v2" ,
                             
@"k3" : @"v3" ,
                             
@"k4" : @"v4" ,
                             
@"k5" : @"v5" ,
                             
@"k6" : @"v6" } ;
       
NSArray *keys = [dic allKeys ];
       
// 遍历字典
       
// 普通遍历
       
for ( int i = 0 ; i < dic. count ; i++) {
           
// 获取 key
           
NSString *key = [keys objectAtIndex :i];
           
NSString *value = [dic objectForKey :key];
           
NSLog ( @"key:%@------value:%@" , key, value);
        }
       
       
// 快速遍历
       
for ( id key in dic) {
           
// 循环块
           
id value = [dic objectForKey :key];
           
NSLog ( @"key:%@------value:%@" , key, value);
        }


/*******************NSSet******************/
       
// 初始化集合
       
// 集合中没有重复元素,而且无序
       
NSSet *set = [[ NSSet alloc ] initWithObjects : @"a" , @"b" , @"c" , nil ];
       
NSLog ( @"set is %@" , set);
       
       
       
// 类方法初始化
       
NSSet *set1 = [ NSSet setWithObjects : @"1" , @"2" , @"3" , nil ];
       
NSLog ( @"set1 is %@" , set1);
       
       
// 获取集合中元素个数
       
NSInteger count = [set1 count ];
       
NSLog ( @"count is %ld" , count);
       
       
// 获取集合中所有元素
       
NSArray *arr = set1. allObjects ;
       
NSLog ( @"arr is %@" , arr);
       
       
// 获取集合中任意一个元素
       
id value  = [set1 anyObject ];
       
NSLog ( @"value is %@" , value);
       
       
       
// 判断集合中是否含有你、某个元素
       
BOOL isTure = [set1 containsObject : @"a" ];
       
NSLog ( @"isTure is %d" , isTure);
       
       
       
       
       
/*******************NSMutableSet******************/
       
// 可变集合
       
NSMutableSet *mutableSet = [ NSMutableSet set ];
       
NSLog ( @"mutableSet is %@" , mutableSet);
       
// 添加元素
        [mutableSet
addObject : @"s" ];
       
NSLog ( @"mutableSet is %@" , mutableSet);
       
       
// 批量添加,通过数组
       
NSArray *arr1 = @[ @"a" , @"x" , @"v" , @"n" ] ;
        [mutableSet
addObjectsFromArray :arr1];
       
NSLog ( @"mutableSet is %@" , mutableSet);
       
       
// 删除元素
        [mutableSet
removeObject : @"x" ];
       
NSLog ( @"mutableSet is %@" , mutableSet);
       
       
// 删除所有元素
//        [mutableSet removeAllObjects];
//        NSLog(@"mutableSet is %@", mutableSet);
       
       
       
// 集合的遍历
       
// 普通遍历 , 需要将集合转化为数组
       
NSArray *arr2 = [mutableSet allObjects ];
       
for ( int i = 0 ; i <  mutableSet. count ; i++) {
           
NSString *str = arr2[i];
           
// 不能直接通过下标取集合的元素,因为集合无序,没有下标
           
NSLog ( @"str is %@" , str);
           
        }
       
       
NSLog ( @"*********************************************************" );
       
       
// 快速遍历
       
for ( id value in mutableSet) {
           
NSLog ( @"value is %@" , value);
        }


/***************NSValue*********************/
       
//NSValue 可以包装任意类型
       
// 创建一个结构体
       
NSRange range = { 1 , 5 };
       
// 将结构体包装成对象
       
NSValue *value = [ NSValue value :&range withObjCType : @encode ( NSRange )];
       
NSLog ( @"value is %@" , value);
       
       
// 还原
       
NSRange newRange;
        [value
getValue :&newRange];
       
NSLog ( @"newRange is %@" , NSStringFromRange (newRange));
       
       
       
//NSNull
       
// 表示一个空对象
       
NSNull *null = [ NSNull null ];
       
NSArray *arr = @[ @"1" , @"3" , @"2" ,null , @"3" ] ;
        NSLog(@"arr is %@", arr);




/****************NSNumber**************************/
       
// 封装基本数据类型
       
int intValue = 10 ;
       
float floatvalue = 3.14 ;
       
BOOL boolValue = true ;
       
       
NSNumber *intNumber = [[ NSNumber alloc ] initWithInt :intValue];
       
NSLog ( @"intNumber is %@" , intNumber);
       
NSNumber * floatNumber = [[ NSNumber alloc ] initWithFloat :floatvalue];
       
NSLog ( @"floatNumber is %@" , floatNumber);
       
NSNumber *boolNumber = [[ NSNumber alloc ] initWithBool :boolValue];
       
NSLog ( @"boolNumber is %@" , boolNumber);
       
       
       
       
// 包装后放入容器中
       
NSArray *arr = @[ intNumber, floatNumber, boolNumber ] ;
       
NSLog ( @"arr is %@" , arr);
       
       
// 还原为基本数据类型
       
float value1 = [floatNumber floatValue ];
       
NSLog ( @"value1 is %.2f" , value1);
       
int value2 = [intNumber intValue ];
       
NSLog ( @"value2 is %d" , value2);
       
int value3 = [boolNumber boolValue ];
       
NSLog ( @"value3 is %d" , value3);
       
       
// 封包
       
NSNumber *intNum = @100 ;
       
NSNumber *floatNum = @9.4 ;
       
NSNumber *charNum = @ 'a' ;
       
NSNumber *valuenum = @(12 + 45) ;
        NSLog(@"valueNum is %@", valuenum);


/******************NSDate********************/
       
       
// 获取当前系统时间     标准时间 GMT 格林尼治时间
       
NSDate *date = [ NSDate date ];
       
NSLog ( @"date is %@" , date); // 打印出来是系统当前时间
       
       
NSDate *date1 =[[ NSDate alloc ] init ];
       
NSLog ( @"date1 is %@" , date1); // 打印出来是系统当前时间
       
       
// 获取时间戳
       
NSTimeInterval time1970 = [date timeIntervalSince1970 ];
       
NSLog ( @"time1970 is %.2f" , time1970);
       
       
// 到当前世纪( 2001 )的时间
       
NSTimeInterval time2001 =[date timeIntervalSinceReferenceDate ];
       
NSLog ( @"time2001 is %.2f" , time2001);
       
       
// 到当前的时间
       
NSTimeInterval time = [date timeIntervalSinceNow ];
       
NSLog ( @"time is %.2f" , time);
       
       
// 获取昨天的时间
       
NSTimeInterval second = 24 * 60 * 60 ;
       
NSDate *yesterdayDate = [[ NSDate alloc ] initWithTimeIntervalSinceNow : -second];
       
NSLog ( @"yestodayDate is %@" , yesterdayDate);
       
       
// 获取明天的时间
       
NSDate *tomorrow = [ NSDate dateWithTimeInterval :second sinceDate :[ NSDate date ]];
       
NSLog ( @"tomorrow is %@" , tomorrow);
       
       
// 获取将来的时间 (最大值)
       
NSDate *future = [ NSDate distantFuture ];
       
NSLog ( @"future is %@" , future);
       
       
// 获取古代时间(以前时间)
       
NSDate *before = [ NSDate distantPast ];
       
NSLog ( @"before is %@" , before);
       
       
// 日期比较 // 没什么实际作用
//        BOOL isTure = [date isEqualToDate:date1];
//        NSLog(@"isEqual  is %d", isTure);
       
       
       
// 下面这些比较重要
       
// 返回两个时间比较早的那个时间
       
NSDate *earlierDate = [tomorrow earlierDate :yesterdayDate];
       
NSLog ( @"earlierDate is %@" , earlierDate);
       
       
// 返回两个时间比较晚的那个时间
       
NSDate *latterDate = [tomorrow laterDate :yesterdayDate];
       
NSLog ( @"laterDate is %@" , latterDate);
       
       
       
// 格式化日期类
       
NSDateFormatter *dateFormatter =[[ NSDateFormatter alloc ] init ];
        [dateFormatter
setDateFormat : @"yyyy MM dd   HH 小时 mm 分钟 ss ZZZZ" ];
       
// 将日期按照格式化转化为字符串
       
NSString *str = [dateFormatter stringFromDate :date];
       
NSLog ( @"str is %@" , str);
       
       
       
// 将字符串格式化为日期
       
NSDate *date3 = [dateFormatter dateFromString :str];
        NSLog(@"date3 iis %@", date3);


/*************    try    catch     finally   ************/
       
NSArray *arr = @[ @"a" , @"s" , @"d" ] ;
       
@try {
           
// 尝试执行以下代码,看编译器是否会报错
           
NSLog ( @"%@" , arr[ 3 ]);
        }
       
@catch (NSException *exception) {
           
// 若捕获到异常,则执行以下代码
           
NSLog ( @"exception name is %@ ,reson is %@" , exception. name , exception. reason );
        }
       
@finally {
           
// 无论是否捕获到异常,都执行
           
NSLog ( @"finally" );
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值