• IOS基础之 (九) Foundation框架


    一NSNumber 类型转换

    NSNumber 把基本数据类型包装成一个对象类型。NSNumber之所以可以(只能)包装基本数据类型,是因为继承了NSValue

    @20 等价于 [NSNumber numberWithInt:20];

    NSNumber 将各种数据类型包装成NSNumber类型

    @10.3 //包装小数为NSNumber
    
    @20 //包装整数 为NSNumber
    
    @"abc" //包装字符型( NSString) 为NSNumber
    
    @'abc' //包装字符 (NSNumber) 为NSNumber

       int age = 100  

      @age  报错,系统会认为这是一个关键字。

      @(age)  正常。()括号表示取值,表示age是一个整体。

    二 int,NSInteger,NSUInteger,NSNumber 

    1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。

    2.NSUInteger是无符号的,即没有负数,NSInteger是有符号的。

    3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。

     NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的,比如在一个NSMutableArray里面这样用:

    NSMutableArray *array = [[NSMutableArray alloc]init];

    [array addObject:[NSNumber numberWithInt: 88]];   //错误

    [array addObject:[NSNumber numberWithInt: @88]];  //正确

    Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。

    例如以下创建方法:

    + (NSNumber *) numberWithChar: (char) value;

    + (NSNumber *) numberWithInt: (int) value;

    + (NSNumber *) numberWithFloat: (float) value;

    + (NSNumber *) numberWithBool: (BOOL) value;

    将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:

    - (char) charValue;

    - (int) intValue;

    - (float) floatValue;

    - (BOOL) boolValue;

    - (NSString *) stringValue;

     例子:

    NSNumber *num = [NSNumber numberWithInt:88];
    NSInteger integer = [num intValue];

    三 NSDate

    1 NSDate *date = [NSDate date];
    2 NSLog(@"%@" , date);
    3 NSDate *date2 = [NSDate dateWithTimeInterval: 5 sinceDate: date];
    4 NSLog(@"%@" , date2);

    第2行:打印的是0时区(格林威治时间),北京时间:东八区

    第3行: 和date比较相差5秒的时间间隔 。

    1 NSTimeInterval seconds = [date timeIntervalSince1970];
    2 NSLog(@"%ld" , seconds);
    3 
    4 [date timeIntervalSinceNow]

    第1行: 从1970到现在是多少秒? 1970是电脑诞生的日子。

    第4行: 从左面时间到现在是多少秒?

    1 NSDate *date3 = [NSDate date];
    2 NSDateFormatter *formatter =[[NSDateFormatter alloc]init];
    3 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    4 NSString *str =[formatter stringFromDate:date] ;
    5 NSLog(@"date=%@" , str);

    第3行: yyyy代表年,MM代表月,dd代表日, HH代表24小时,hh代表12小时 ,mm代表分,ss代表秒。

    1 NSDateFormatter *formatter1 =[[NSDateFormatter alloc]init];
    2 formatter1.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    3 NSString *time = @"2016-02-22 21:49:30";
    4 NSDate *date4 = [formatter1 dateFromString:time];
    5 NSLog(@"date4=%@" , date4);

    第4行:把NSString转换成NSDate。

  • 相关阅读:
    tree-cli 自动生成项目目录结构
    按需导入vant-ui
    全局导入vant-ui
    mook使用流程
    axios使用流程
    Vuex使用流程
    vue-router使用流程
    img的complete和onload
    react-redux 如何在子组件里访问store对象
    ES6中的Export/import操作的是引用
  • 原文地址:https://www.cnblogs.com/wangshuo1/p/iOS-9.html
Copyright © 2020-2023  润新知