【OC05-2】NSSet、NSNumber、NSValue、NSDate、异常处理(连载七)

//************* NSSet ********************************
       
       
// 不可变集合
       
// 初始化集合
       
// 集合中没有重复的元素,而且无序
       
NSSet *set = [[ NSSet alloc ] initWithObjects : @"1" , @"2" , nil ];
       
NSLog ( @"set is %@" ,set);
       
       
// 类方法初始化
       
NSSet *set1 = [ NSSet setWithObjects : @"1" , @"2" , @"x" , @"y" , nil ];
       
NSLog ( @"set1 is %@" ,set1);
       
       
// 获取集合中元素的个数
       
NSInteger count = [set1 count ];
       
NSLog ( @"count is %ld" ,count);
       
       
// 获取集合中所有元素
       
NSArray *list = [set1 allObjects ];
       
NSLog ( @"list is %@" ,list);
       
       
// 获取集合中任意一个元素
       
id value = [set1 anyObject ];
       
NSLog ( @"value is %@" ,value);
       
       
// 判断集合中是否包含某各元素
       
BOOL isTrue = [set1 containsObject : @"x" ];
       
NSLog ( @"isTrue is %d" ,isTrue);
       
       
//*******************************************
       
// 可变集合
       
NSMutableSet *mutableSet1 = [ NSMutableSet set ];
       
NSLog ( @"mutableSet is %@" ,mutableSet1);
       
       
// 添加元素
        [mutableSet1
addObject : @"x" ];
       
NSLog ( @"mutableSet is %@" ,mutableSet1);
       
       
// 批量添加
       
NSArray *arr = @[ @"1" , @"2" , @"3" , @"3" , ] ;
        [mutableSet1
addObjectsFromArray :arr];
       
NSLog ( @"mutableSet is %@" ,mutableSet1);
       
       
// 删除元素
        [mutableSet1
removeObject : @"x" ];
       
NSLog ( @"mutableSet is %@" ,mutableSet1);
       
       
// 删除所有元素
//        [mutableSet1 removeAllObjects];
//        NSLog(@"mutableSet is %@",mutableSet1);
       
       
       
// 集合的遍历
       
// 传统遍历
       
// 需先将集合中的元素转入数组
       
NSArray *arr1 = [mutableSet1 allObjects ];
       
for ( int i = 0 ; i < mutableSet1. count ; i++) {
           
NSString *str = arr1[i];
           
// 注意:不可以通过下标取集合中的元素
//            NSString *str = mutableSet1[1];
           
NSLog ( @"%@" ,str);
        }
       
       
NSLog ( @"------------------------" );
       
// 快速遍历
       
for ( id value in mutableSet1) {
           
NSLog ( @"%@" ,value);
        }



//************ NSNumber *************************
       
       
// 封装基本数据类型
       
int intValue = 10 ;
       
float floatValue = 3.23 ;
       
BOOL boolValue = true ;
       
       
NSNumber *intNum = [[ NSNumber alloc ] initWithInt :intValue];
       
NSNumber *floatNum = [[ NSNumber alloc ] initWithFloat :floatValue];
       
NSNumber *boolNum = [[ NSNumber alloc ] initWithBool :boolValue];
       
       
NSLog ( @"intNum is %@, floatNum is %@, boolNum is %@" ,intNum, floatNum, boolNum);
       
       
// 包装后可以放到容器中
       
NSArray *arr = @[ intNum, floatNum, boolNum ] ;
       
NSLog ( @"arr is %@" ,arr);
       
       
// 还原为基本数据类型
       
int value1 = [intNum intValue ];
       
float value2 = [floatNum floatValue ];
       
BOOL value3 = [boolNum boolValue ];
       
       
NSLog ( @"value1 is %d, value2 is %.2f, value3 is %d" ,value1, value2, value3);



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




//*********** 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 ( @"time2010 is %.2f" ,time2001);
       
       
// 到当前的时间
       
NSTimeInterval time = [date timeIntervalSinceNow ];
       
NSLog ( @"time is %.2f" ,time);
       
       
// 获取昨天的时间
       
NSTimeInterval oneDay = 24 * 60 * 60 ; // 先计算出一天的秒数
       
NSDate *yesterday = [[ NSDate alloc ] initWithTimeIntervalSinceNow :-oneDay];
       
NSLog ( @"yestoday is %@" ,yesterday);
       
       
// 获取明天的时间
       
NSDate *tommorrow = [[ NSDate alloc ] initWithTimeIntervalSinceNow :oneDay];
       
NSLog ( @"tommorrow is %@" ,tommorrow);
       
       
// 获取将来的时间(最大值)
       
NSDate *future = [ NSDate distantFuture ];
       
NSLog ( @"future is %@" ,future);
       
       
// 获取过去的时间
       
NSDate *past = [ NSDate distantPast ];
       
NSLog ( @"past is %@" ,past);
       
       
       
//============ 日期的比较 =============================
       
       
// 比较两个时间是否相同 ---- (无意义)
       
BOOL isEqual = [date isEqualToDate :date1];
       
NSLog ( @"isEqual is %d" ,isEqual);
       
       
// 返回两个时间中较早的那个时间
       
NSDate *earlierDate = [tommorrow earlierDate :yesterday];
       
NSLog ( @"earlierDate is %@" ,earlierDate);
       
       
// 返回两个时间中较晚的那个时间
       
NSDate *laterDate = [tommorrow laterDate :yesterday];
       
NSLog ( @"laterDate is %@" ,laterDate);
       
       
//====================================================
       
//------------- 重要!!! ------------------------------
       
// 将时间戳转换成日期
       
NSTimeInterval seconed = 1234567890 ;
       
NSDate *date2 = [ NSDate dateWithTimeIntervalSince1970 :seconed];
       
NSLog ( @"date2 is %@" ,date2);
       
       
// 格式化日期类
       
NSDateFormatter *df = [[ NSDateFormatter alloc ] init ];
        [df
setDateFormat : @"yyyy MM dd   HH mm ss   ZZZZ" ];
       
       
// 将日期按照格式化类型转换成字符串
       
NSString *str = [df stringFromDate :date];
       
NSLog ( @"str is %@" ,str);
       
       
// 将字符串格式化为日期
       
NSDate *date3 = [df dateFromString :str];
        NSLog(@"date3 is %@",date3);





//*********** 异常处理 ******************************
       
       
NSArray *array = @[ @"1" , @"2" ] ;
       
@try {
           
// 尝试着去执行以下代码,看编译器是否会报错
           
NSLog ( @"%@" ,array[ 2 ]);
        }
       
@catch (NSException *exception) {
           
// 如果捕获到异常,则执行以下代码
           
NSLog ( @"exception name is %@, reson is %@" ,exception. name , exception. reason );
        }
       
@finally {
           
// 不管是否捕获到异常,都会执行
           
NSLog ( @"finally" );
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值