IOS-OC-OC空值和plist文件、NSValue、NSNumber、NSDateFormatter. NSDate

空值

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NULL 表示基础类型的指针为空
        int *w = NULL;
        
        // nil 表示对象的指针为空
        id obj = nil;
       
        // Nil 表示Class变量为空
        Class cla = Nil;
        
        // NSNull 用在数组或字典中,占位,作为空元素
        NSArray *array = [[NSArray alloc] initWithObjects:@"one",@13,@"two",[NSNull null],@"诸葛连弩", nil];
        
        NSLog(@"%@",array);
        
    }
    return 0;
}

plist文件处理

#define PATH @"/Users/qianfeng/Desktop/HeHe"

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 创建plist文件(代码)
        // 获取文件存放的路径
        NSString *str = [PATH stringByAppendingPathComponent:@"test.plist"];
        
        // 生成需要存储的数据
        NSArray *arrayO = @[@"孙悟空",@"黑熊精",@10];
        NSArray *arrayT = @[@"薛宝钗",@"诸葛亮",[NSDate date]];
        NSArray *arrayTh = @[@"edu",@"hehe"];
        
        // 一般来说plist文件的根节点是一个字典
        NSDictionary *dict = @{
                               @"ONE":arrayO,
                               @"TWO":arrayT,
                               @"THREE":arrayTh
                               };
        
        // 写入数据
        [dict writeToFile:str atomically:YES];
        
        
        // 读取plist文件的数据
        NSDictionary *dictQ = [[NSDictionary alloc] initWithContentsOfFile:str];
        
        //想取数组一中的数据
        NSArray *arr = [dictQ objectForKey:@"ONE"];
        NSLog(@"%@",arr);
        
    }
    
    return 0;
}

NSValie

#import <Foundation/Foundation.h>

typedef struct {
    int  a;
    char b;
    int c;
    char d[5];
}STRUCT;

int main(int argc, const char * argv[]) {
    @autoreleasepool {
     
        int a[10] = {1,2,3,4,5,6,7,8,9,10};
        
        // 将数组(C语言)转成对象,其实就是将数组的数据存放到对象里
        //value:任何数据的类型的地址
        //withObjCType: OC支持的encode类型
        NSValue *value = [NSValue value:a withObjCType:@encode(int[10])];
        
        NSLog(@"%s",@encode(int));//打印结果:i
        NSLog(@"%s",@encode(char));//打印结果:c
        NSLog(@"%s",@encode(int[10]));//打印结果:[10i]
        NSLog(@"%s",@encode(STRUCT));//打印结果:{?=ici[5c]}
  
        int m[10];
        [value getValue:m];
        
        for (int i = 0; i < 10; i ++) {
            NSLog(@"%d",m[i]);//打印结果:1-10个数据
        }
        
        
        // value.objCType 获取value对象里面存储的数据类型
        NSLog(@"%s",value.objCType);////打印结果:[10i]
        
        //这里是两个字符串的比较    比较两字符串相不相等  如果等于0则相等
        if (strcmp(value.objCType, @encode(int[10]))== 0) {
            NSLog(@"类型相同");
        }
        
       // 将对象放入NSValue
        NSValue *valueT = [NSValue valueWithNonretainedObject:@"大话西游"];
        // 取对象
        NSString *str = [valueT nonretainedObjectValue];
        NSLog(@"%@",str);
    }
    return 0;
}

NSNumber

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
      
        // 将整形转成NSNumber对象
        NSNumber *numberInt = [[NSNumber alloc] initWithInt:100];
      //  NSNumber *numberInt = [[NSNumber alloc] initWithInt:100];
    //    NSNumber *numberInt = @6;
    //    NSNumber *numberFloat = @3.14;
    //    NSNumber *numberBool = @YES;
        
        NSNumber *numberFloat = [[NSNumber alloc] initWithFloat:3.14];
     //   NSNumber *numberFloat = [[NSNumber alloc] initWithFloat:];
        
        NSNumber *numberBool = [[NSNumber alloc] initWithBool:YES];
    //    NSNumber *numberBool = [[NSNumber alloc] initWithBool:YES];
        
        // xcode 5 之后NSNumber可以这么写
        NSNumber *numberQ = @6;
        NSNumber *numberW = @3.14;
        NSNumber *numberE = @YES;
        
        // NSNumber大小比较
        // 相等
        BOOL ret = [@5 isEqualToNumber:@5.0];
        if (ret) {
            NSLog(@"相等");
        }
        
        // 大小比较
        NSComparisonResult result = [@5 compare:@9];
        if (result == NSOrderedAscending) {// 升序
            NSLog(@"右边的大");
        }else if (result == NSOrderedDescending){// 降序
            NSLog(@"右边小");
        }else{
            NSLog(@"相等");
        }
    }
    return 0;
}

NSDateFormatter

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建时间戳
        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
      //  NSLog(@"%@",dateFormatter);
        //使用时间戳的目的,是为了自定义时间的打印格式
       dateFormatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss.S";
        
        
        //后设置会顶替原设置
    //   dateFormatter.dateFormat = @"yyyy-MM-dd ahh时mm分ss秒";
        
     //    NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);
        NSString *str = [dateFormatter stringFromDate:[NSDate date]];
        NSLog(@"%@",str);
        //设置时区,如果不设,缺省是系统时区
      //  dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"CST"];
        
        //根据风格,返回时间打印的字符串
//        NSLog(@"%@", [dateFormatter stringFromDate:date]);
        

        
        
        
    }
    return 0;
}

NSDate

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        // 1.获取当前时间(获取的是格林尼治时间)
        NSDate *curentDate = [NSDate date];
        NSLog(@"%@",curentDate);
        
        // 2. 返回以当前时间为准,之后的几秒
        NSDate *dateT = [NSDate dateWithTimeIntervalSinceNow:3600];
        NSLog(@"%@",dateT);
        
        // 3. 返回1970.1.1之后的对少秒时间
        NSDate *dateE = [NSDate dateWithTimeIntervalSince1970:3600];
        NSLog(@"%@",dateE);
        
        // 返回很多年前的一天
        NSDate *dateP = [NSDate distantPast];
        NSLog(@"%@",dateP);
        
        // 返回很多年后的一天
        NSDate *dateF = [NSDate distantFuture];
        NSLog(@"%@",dateF);
        
// 获取当前时间+多少秒 生成新的时间
//        NSDate *dateY = [curentDate addTimeInterval:1000];
 //       NSLog(@"%@",dateY);
        
        // 返回一个时间 dateT和当前时间的时间差
        NSTimeInterval dateH = [dateT timeIntervalSinceNow];
        NSLog(@"%lf",dateH);
        
        // 获取系统时区
        NSTimeZone *zone = [NSTimeZone systemTimeZone];
        NSLog(@"%@",zone);
        
        // 获取时区
        NSDictionary *dict = [NSTimeZone abbreviationDictionary];
        NSLog(@"%@",dict);
    }
    return 0;
}

// 作业

1. 让A B拥有5个相同的方法

2. 让A用有一份协议,其中有2个必须实现的方法,3个不要要求的方法

3. 一个人有一条狗,狗饿了,人喂食。


// 拓展

练习:
1.创建广播站类和收音机类

广播站
方法:
播音(参数是一个字符串)

收音机
方法:
收音并播放(参数也是字符串, 被动)



作业:
1.创建两个界面的类
界面1
属性  BOOL isOn;
方法
显示当前状态(show)

界面2
属性  BOOL isOn;
方法:
开启
关闭
//当界面2开启的时候 界面1的状态是关闭。
  当界面2 关闭的时候 界面1的状态是开启
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,732评论 1 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 自己常用的工具类 ///本地保存string,int,Char,等类型,forKey为键,Value为要保存的值 ...
    愤怒滴菜鸟阅读 318评论 0 1
  • 萧瑟灰白的天气,秋寒拉扯着每一个行人匆匆,空气中合着寂寞,一如夜的凝重。校园的操场上依旧几个人执着的打球,他们苦练...
    舞力对决723阅读 525评论 7 1
  • 今宵雨雾皆朦胧, 花灯笙歌夜已休。 静待漫天烟火礼, 洒落凡尘动古城。
    白纸人生淡若浮尘阅读 230评论 1 1