zoukankan      html  css  js  c++  java
  • Foundation框架中一些类的使用

    提示:  这篇博文主要介绍了Foundation框架中一些类的使用方法,都是以代码方式展示的,可能会比较乱,但都是些常用的方法,这些方法常用自然就会记住所以不用纠结,注意主要记方法的第一个单词,单词不认识的话可以记前三个字母,再配合提示查找

    ------------------------------------------------------------------------------------------------------------------ 

    NSURL简介

    什么是URL?

    URL的全称是Uniform Resource Locator(统一资源定位符) URL是互联网上标准资源的地址 互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置 根据一个URL就能找到唯一的一个资源

    URL的格式?

    基本URL包含协议、主机域名(服务器名称IP地址)、路径

    可以简单认为: URL == 协议头://主机域名/路径

    例如:http://www.baidu.com/123.jpg

    常见的URL协议头(URL类型)

    httphttps :超文本传输协议资源, 网络资源

    在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更 加安全。

    Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http 的连接很简单,是无状态的

    https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

    ftp :文件传输协议 

    // NSURL OC提供了一个URL处理的一个类
            // http
            // https 加密
            // ftp://
            // file:// 本地文件
            // NSURL 写入文件
            // 1)通过 URLWithString 构建一个NSURL
            // URLWithString  可以构建本地路径的URL
            // 可以构建路径,调用手机系统的程序
            // 打电话
            NSURL *url = [NSURL URLWithString:@"tel://10086"];
            // 发短信
            NSURL *url = [NSURL URLWithString:@"sms://10086"];
            // 保存文件到本地
            NSURL *url = [NSURL URLWithString:@"file://地址"];
            // 将字符串写入本地
            NSString *str = @"xxxxx";
           BOOL isOk = [str writeToURL:<#(NSURL *)#> atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
            // 第一个参数文件路径 第二个参数是否利用原子性 第三个编码标准NSUTF8StringEncoding 最后一个错误信息
            // 一般写入文件都要进行判断是否写入成功
            NSError *error;
            if (isOk) {
                NSLog(@"写入成功");
            } else {
                NSLog(@"%@",&error);
            }
     NSURL的一些用法

    NSString

    // 快速创建字符串
        NSString *str = @"xxxx";
        // 字符串写入文本
        BOOL isOk = [str writeToFile:@"/User/Apple/Desktop/1.tex" atomically:YES encoding:NSUTF8StringEncoding error:nil];
     
    
        NSString *str1 = @"abc";   // a 97
        NSString *str2 = @"abc";   // A 65
        
        //取出每个字符的ASCII码值 ,比较ASCII码值大小
        //compare方法比较大小
        //compare 默认的区分大小写的
        //compare 这个函数,不能增加条件
        //        NSComparisonResult result = [str1 compare:str2];
        
        //比较的时候,不区分大小写,参考字符的个数
        NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
        //
        switch (result) {
            case NSOrderedAscending:
                NSLog(@"str1 < str2 升序");
                break;
                
            case NSOrderedDescending:
                NSLog(@"str1 > str2 降序");
                break;
                
            case NSOrderedSame:
                NSLog(@"str1 == str2 ");
                break;
                
            default:
                break;
        }
    
    //地址的比较
            // "==" 不能够判断字符串是否相等的
            
            //判断字符串内容真正是否相等,使用是
            //isEqualToString:
            //注意:他是区分大小写的
            
            if ([str1 isEqualToString:str3]) {
                NSLog(@"相等");
            }else{
            
             NSLog(@"不相等");
            }
    
     /*
         检测字符串的前缀和后缀
         */
    
        NSString *url = @"https://www.baidu.com";
        
        //如何检测这个字符串是否是一个网址
        //http://    https://
        // 检测一个字符串的前缀是否以 http://  开头  或者 https:// 开头
        // [str hasPrefix:@"要检测的内容"];
        
        if([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"]){
            
            NSLog(@"是一个网址");
        }else{
            
            NSLog(@"这不是一个网址");
        }
        
        //检测字符串的后缀
        // xxxx.jpg    判断 字符串的后缀是否是".jpg"
        // xxxx.png
        // xxxx.jpeg
        // xxxx.gif
        NSString *imgName = @"xxxxx.doc";
        // [str hasSuffix:@"带检测的后缀"]
        if([imgName hasSuffix:@".jpg"]||[imgName hasSuffix:@".png"]||[imgName hasSuffix:@".jpeg"]||[imgName hasSuffix:@".gif"]){
            
            NSLog(@"是一个图片");
        }else{
            
            NSLog(@"这不是一个图片");
        }
    
    
    //字符串的查找
            // 查找某个字符串在另外一个字符串中首次出现的位置
            //     0123456789
            //1  @"asdaiosffsdafiosasdfsffitcastasdfasd"
            //2  @"ios"
            //   4   3
            
            //  1 rangOfString 2
            NSString *str1 =@"asdaiosffsdafiosasdfsffitcastasdfasd";
            NSString *str2 =@"cjk";
            // 字符串查找
            // 查找2 在 1中首次出现的位置
            // 如果查找到了,返回2在1中的位置和长度
            // 如果查找不到,返回的信息:
            //            location   特别大的数(NSNotFound) 最大的long类型的数
            //            length     0
            // range 结构体变量  NSRange 结构别名
           NSRange range =  [str1 rangeOfString:str2];
            
            //判断是否查找到了
            if(range.location!=NSNotFound){
            //range.location 表示字符串首次出现的位置
            //range.length 字符串出现的长度(实质上就是子字符串的长度)
            NSLog(@"%lu,%lu",range.location,range.length);
            }else{
            
                NSLog(@"在%@中没有找到这个字符串%@",str1,str2);
            }
    
    
    // 字符串的截取
        NSString *str = @"http://www.baidu.com";
        
        //1) 从xx位置开始,到最后结束(包含xx这个位置的字符)
        NSString *str1 = [str substringFromIndex:5];
        NSLog(@"str1 = %@",str1);
        
        
        //2) 从开始位置,到xx位置结束(不包含xx这个位置)
        NSString *str2 = [str substringToIndex:5];
        NSLog(@"str2 = %@",str2);
        
        
        //3) 截取一个范围 range
        NSRange r1 = {3,4};
        NSString *str3 = [str substringWithRange:r1];
        NSLog(@"str3 = %@",str3);
    
    
    
            //字符串的替换
            // @"asdfsdafasdfdasdfsa"  ----> a 替换成 "*"
            // @" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa"
            
            NSString *str =@"asdfsdafasdfdasdfsa";
            
    //        str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"
            //把a替换成 *
            NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];
            NSLog(@"newStr = %@",newStr);
            
            // 把空格给去掉
            str =@" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa";
            newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
             NSLog(@"newStr = %@",newStr);
    
    // 字符串转各种数值
        NSString *str = @"11";
        int a = [str intValue];
        NSString *str1 = @"12.21";
        double b = [str1 doubleValue];
        NSString *str2 = @"12.12f";
        float c = [str2 floatValue];
    
            //OC的字符串和 C的字符串互相转换问题
            // char*  NSString
            //1) C---->OC对象
            
            char *s = "zhangsanfeng";
            printf("%s
    ",s);
            
            //思路:创建一个OC的字符串对象,用C语言的字符串创建
            NSString *str = [NSString stringWithUTF8String:s];
            NSLog(@"str = %@",str);
            
            //2) OC对象 --> C的字符串
            NSString *str2 = @"zbz";
            // 把str2 转 C的字符串
            const char *s1 = [str2 UTF8String];
            printf("s1 = %s
    ",s1);
    NSString的一些用法

    NSRange

    // NSRange的定义
    typedef struct _NSRange {
        NSUInteger location; // 位置
        NSUInteger length;   // 从该位置算起的长度
    } NSRange;

    NSMutableString

     
            //  可变的字符串
            NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];
            // 在Jack后面加上&Rose
            [str2 appendString:@"&Rose"];
    
     
        NSMutableString *str = [NSMutableString string];
        
        //1) appendFormat 格式化的添加字符串
        [str appendFormat:@"http://www.baidu.com/%d",100];
        
        //str http://www.baidu.com/100
        NSLog(@"%@",str);
        
        //2) 删除字符串一部分内容
        [str deleteCharactersInRange:NSMakeRange(3, 4)];
        NSLog(@"%@",str);
        //3) 插入一个字符串
        [str insertString:@"p://" atIndex:3];
        NSLog(@"%@",str);
        
        //4) 替换字符串的一部分内容
        [str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"xxxxx"];
        NSLog(@"%@",str);
    
    //  注意不能这么写
          NSMutableString *str = @"abc";
     NSMutableString的一些用法

    NSArray

     
    //NSArray特点:
            // 一旦创建成功,内容不可改变
            // 只能存放OC对象
            
            // 1)创建一个空数组
            NSArray *arr1 = [NSArray array];
    
            // 2)创建数组,只有一个元素
            NSArray *arr2 = [NSArray arrayWithObject:@"1"];
    
            // 3)创建数组,有多个元素
            // nil 表示数组赋值结束
            // 常见写法
            NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1, nil];
                            NSLog(@"arr3 = %@",arr3);
            // 4)调用对象方法,创建数组
            // nil Nil NULL  NSNULL
            NSArray *arr4 = [[NSArray alloc] initWithObjects:@"three",[NSNull null],@"four", nil];
                            NSLog(@"arr4 = %@",arr4);
            // 5)用一个数组可以创建另外一个数组
            NSArray *arr5 = [NSArray arrayWithArray:arr3];
                            NSLog(@"arr5 = %@",arr5);
    
    
      // 用简化的方式,来定义和访问数组元素
            //1)用简化的方式,定义数组
            //格式: @[ 数组元素 ]
            NSArray *arr = @[@"1",@"one",@"3",@4,@"ONE"];
    
    // 数组的常见的方法
        NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1,@"three", nil];
        NSLog(@"arr3 = %@",arr3);
        
        // 1)获取数组的长度  count获取数组的元素的个数
        NSLog(@"%ld",arr3.count);
        
        // 2)根据下标,获取下标对应的对象
        NSLog(@"%@",[arr3 objectAtIndex:3]);
        
        // 3)返回元素的下标
        NSUInteger loc = [arr3 indexOfObject:@"three"];
        NSLog(@"%ld",loc);
        
        // 4)数组中是否包含了某个元素
        if([arr3 containsObject:@"four"]){
            
            NSLog(@"包含此元素");
            
        }else{
            
            NSLog(@"不包含");
        }
    
       // 定义一个数组
            NSArray *arr = @[@"one",@"two",@"three",@"four"];
            
            // 对数组进行遍历
            
            //1) 普通的方式,通过下标访问
            for (int i=0; i<arr.count; i++) {
                NSLog(@"-> %@",arr[i]);
            }
            
            //2) 快速枚举法 for循环的增强形式
            for (NSString * str in arr) {
                 NSLog(@"---> %@",str);
            }
            
            //3) 使用block的方式,进行访问
            //                               数组元素            元素下标     是否停止
            //stop:YES  会停止, stop:NO 不会停止
            [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
                
                if(idx == 2){
                
                    *stop = YES;  //停止  // break;
                    
                }else{
                
                   NSLog(@"idx = %ld,obj = %@",idx,obj);
                }
                
                
            }];
    
    
            // 定义一个数组
            NSArray *arr = @[@1,@2,@3,@4];
            
            // 1)把数组中的元素用 "-" 连接起来
            //  [数组 componentsJoinedByString @"分隔符"];
            // 1-2-3-4
            NSString *str = [arr componentsJoinedByString:@"-"];
            NSLog(@"str = %@",str);
            
            
            
            //2) 给一个字符串,分割成一个数组
            // 400-800-12580   //取得 400    12580    800
            NSString *str2 = @"400-800-12580";
            NSArray *arr2 = [str2 componentsSeparatedByString:@"-"];
            NSLog(@"%@",[arr2 firstObject]);
            NSLog(@"%@",[arr2 lastObject]);
            NSLog(@"%@",arr2[1]);
            
            str2 = @"400-800-12580#400-888-11200";
            NSArray *arr3 = [str2 componentsSeparatedByString:@"#"];
            NSLog(@"arr3 = %@",arr3);
            
            // 第一个电话的每一部分
            NSArray *arr4 =  [[arr3 firstObject] componentsSeparatedByString:@"-"];
            NSLog(@"arr4 = %@",arr4);
            
            NSArray *arr5 =  [[arr3 lastObject] componentsSeparatedByString:@"-"];
            NSLog(@"arr5 = %@",arr5);
     NSArray的一些用法

    NSMutableArray

      // 数组的使用
            // 1)创建数组
             // i. 空数组
            NSMutableArray *arr1 = [NSMutableArray array];
            NSLog(@"%p",arr1);
            
             // ii.创建的时候初始化一个元素
            NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@"one"];
            
             // iii.创建数组的时候,初始化多个元素
            NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"one",@"two",@3,nil];
            
             // IV . 创建一个数组,并且指定长度,
            NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];
          
            //2) 添加元素
            [arr1 addObject:@"fengjie"];
    
             NSLog(@"%p",arr1);
            //插入元素到指定的位置
            [arr1 insertObject:@"zbz" atIndex:0];
       
            //3) 删除元素
            // 根据对象内容删除
            [arr1 removeObject:@"zbz"];
            // 根据位置删除
            [arr1 removeObjectAtIndex:1];
            // 全部删除
            [arr1 removeAllObjects];
    
            //4) 修改元素
            // two --> four
            [arr3 replaceObjectAtIndex:1 withObject:@"four"];
            // four --> five
            // 更加简单地方法
            arr3[1] = @"five";
            NSLog(@"%@",arr3);
            
            // 5) 查找元素
            BOOL isSearch = [arr3 containsObject:@"four"];
            NSLog(@"%d",isSearch);
            
            //6) 交换元素
            // 1   2   3   4   5
            // 5   2   3   4   1
            //temp = a[0];
            //a[0] = a[len-1];
            //a[len-1] = temp;
            NSMutableArray *arr5 =[NSMutableArray arrayWithObjects:@1,@2,@3,@4,@5, nil];
            // 可以交换数组元素
            [arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];
            NSLog(@"%@",arr5);
    NSMutableArray的一些用法

    NSDictionary

     
    // NSDictionary 不可变的,一旦创建,内容就不能添加删除(不能改动)
            // 1)创建空字典
            NSDictionary *dict1 = [NSDictionary dictionary];
            // key    value
            // zs ---> 张三
            
            // ls ---> 李四
            // 2) 创建只有一组键值对的字典
            NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"zhangsan" forKey:@"zs"];
            
            // 3)创建多组键值对的字典
            // value值,key值
            NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",@"value2",@"k2", nil];
            
            // 注意;
            // 字典的key值和value值,都必须是对象
            
            // 4)快速创建一个字典
            // @{,,key值:value值,,,};
            // key值不能重复:
            // 如果重复了,也不会报错
            // 如果重复了,最后添加的将不能够保存到字典中
            
            NSDictionary *dict4 = @{@"zs":@"zhaosi",@"zs":@"zhangsan",@"ls":@"lisi",@"bz":@"banzhang"};
            
            NSLog(@"%@",dict4); // 以%@格式打印字典,控制台输出一个{   }
            // 5)获取字典的长度
            NSLog(@"%lu",dict4.count);
            // 6)根据key值取出value值
            //      zs      zhaosi
            //                                   key
            NSString *str = [dict4 objectForKey:@"zs"];
            NSLog(@"str = %@",str);
            
            //7) 字典的遍历问题
            // 第一步:获取所有的key
            // 第二步:根据key获取value
    //        for(NSString *key in dict4){
    //            NSLog(@"key = %@,value = %@",key,[dict4 objectForKey:key]);
    //        }
            //                                           key     value       stop
            [dict4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
                
                NSLog(@"%@ --> %@",key,obj);
                
            }];
     NSDictionary的一些用法

    NSMutableDictionary

     
       // 1)可变字典的创建
            NSMutableDictionary *dict1 = [NSMutableDictionary dictionary]; // 创建空字典
            NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithCapacity:3];
    
            // 2)给可变字典添加键值对
            
            [dict1 setValue:@"zhaosi" forKey:@"ls"];// 因为key值重复了,所以添加不上
            [dict1 setValue:@"lisi" forKey:@"ls"];  // ls
            
            [dict1 setValue:@"liuneng" forKey:@"ln"];
            NSLog(@"%@",dict1);
            
            //3) 删除
    //        [dict1 removeObjectForKey:@"ls"];
    //        [dict1 removeAllObjects];
            NSLog(@"%@",dict1);
            // 4)修改
            //
            [dict1 setObject:@"zhaosi" forKey:@"ls"];
            // 简写形式
            dict1[@"ls"] = @"xxxxx";
             NSLog(@"%@",dict1);
            // 5)查找
            // 获取所有的key值
            NSArray *arr = [dict1 allKeys];
            if([arr containsObject:@"ls"]){
            
                NSLog(@"存在ls的key");
            }
            
            
            
        }
     NSMutableDictionary的一些用法

     NSFileManager

    //NSFileManager 用于判断
            
            NSString *filePath = @"/Users/apple/Desktop/arr.plist";
            
             NSString *filePath2 = @"/";
            
            // 1) 判断文件是否存在
            //创建文件管理对象
            //调用defaultManager 创建一个文件管理的单例对象
            //单例对象:在程序运行期间,只有一个对象存在
            NSFileManager *fm = [NSFileManager defaultManager];
            // YES 存在   NO 不存在
            BOOL isYES = [fm fileExistsAtPath:filePath];
            NSLog(@"-->%d",isYES);
            
            
            if(isYES){
                BOOL isDir;
            
                // 2) 判断是否是一个目录
                [fm fileExistsAtPath:filePath isDirectory:&isDir];
                
                if (isDir) {
                    NSLog(@"这是一个目录");
                }else{
                
                    NSLog(@"这不是一个目录");
                }
            
            }
            
            // 3) 判断文件是否可读
            
            isYES = [fm isReadableFileAtPath:filePath];
            
            
            // 4) 是否可写
            isYES = [fm isWritableFileAtPath:filePath2];
            
    
            // 5) 是否可删除
            isYES = [fm isDeletableFileAtPath:filePath2];
            
                     NSLog(@"-->%d",isYES);
    
    //创建文件对象
            NSFileManager *fm = [NSFileManager defaultManager];
            NSString *filePath = @"/Users/apple/Desktop/arr.plist";
            
            NSString *dirPath = @"/Users/apple/Desktop/a";
           
            //1)如何获取文件的信息(属性)
            NSDictionary *dict = [fm attributesOfItemAtPath:filePath error:nil];
            NSLog(@"%@",dict);
            NSLog(@"%@,%@",[dict objectForKey:@"NSFileOwnerAccountName"],dict[@"NSFileOwnerAccountName"]);
            
            //2)获取指定目录下文件及子目录
            //使用递归的方式 获取当前目录及子目录下的所有的文件及文件夹
            NSArray *subPaths = [fm subpathsAtPath:dirPath];
            
            //subpathsOfDirectoryAtPath 不是使用递归的方式获取的
            subPaths = [fm subpathsOfDirectoryAtPath:dirPath error:nil];
            NSLog(@"subPaths = %@",subPaths);
            
            
            
            //3)获取指定目录下的文件及目录信息(不在获取后代路径)
            subPaths = [fm contentsOfDirectoryAtPath:dirPath error:nil];
            NSLog(@"subPaths = %@",subPaths);
    NSFileManager的一些用法

    NSNumber

    int a = 10;
            int x = 100;
            float f1 = 3.23f;
            double d1 = 2.34;
            
            // numberWithInt   把int   转换为 NSNumber
            NSNumber *intObj = [NSNumber numberWithInt:a];
            NSMutableArray *array = [NSMutableArray arrayWithObjects:intObj, nil];
    
            //  float ---> NSNumber
            NSNumber *floatObj = [NSNumber numberWithFloat:f1];
            [array addObject:floatObj];
    
            
            // double ---> NSNumber
            NSNumber *dObj = [NSNumber numberWithDouble:d1];
            //把对象添加到数组中
            [array addObject:dObj];
            //@(变量名)  ---> 把 x 转换为NSNumber对象
            [array addObject:@(x)];
            //@数值,把数值包装成对象
            [array addObject:@18];
            
            NSLog(@"array = %@",array);
            
            
            // 数组的第一个元素和第二个元素相加
            
    //        array[0]+array[1]
            
            //1)取出数组的元素
            //2)把数组元素转换为基本数据类型的数据
            NSNumber *n1 = array[0];
            int a1 = [n1 intValue];  //获取对象的整形值
            
            NSNumber *n2 = array[1];
            float f2 = [n2 floatValue];
            
            a1 = [array[0] intValue]+[array[1] floatValue];
            NSLog(@"%d",a1);
    NSNumber的一些用法

    NSValue

        //创建一个结构体变量,保存点
        // p1 是 CGPoint 类型的结构体变量
        CGPoint p1 = CGPointMake(20, 50);
        NSRect r1 = NSMakeRect(0, 0, 200, 100);
        //创建数组
        NSMutableArray *arr = [NSMutableArray array];
        //p1 ---> obj
        //valueWithPoint    把结构体转换为NSValue对象
        NSValue *pointVal = [NSValue valueWithPoint:p1];
        //把对象存放到数组中
        [arr addObject:pointVal];
        [arr addObject:[NSValue valueWithRect:r1]];
        
        NSLog(@"arr = %@",arr);
        
        //取出r1的值
        // rectValue 从NSValue对象中,取得NSRect类型的值
        NSValue *r1Val = [arr lastObject];
        NSRect r2 = [r1Val rectValue];
        
        NSLog(@"%@",NSStringFromRect(r2));
    
    
    typedef struct D{
        int year;
        int month;
        int day;
    
    } MyDate;   //MyDate是一个别名
    
    // 保存 一个 年月日
            // 2015-7-30
            MyDate md = {2015,7,30};
            // md -----> obj
            //@encode(MyDate) 作用,把MyDate类型生成一个常量字符串描述
            NSValue *val = [NSValue valueWithBytes:&md objCType:@encode(MyDate)];
            //定义一个数组,把val存到数组中
            NSMutableArray *arr = [NSMutableArray arrayWithObject:val];
            
            //从数组中取出来NSValue对象
            //从对象中,取出结构体变量的值
            // 传入一个结构体变量的地址
            MyDate tmd;
            // getValue获取结构值,保存到结构体变量tmd
            [val getValue:&tmd];
            
            NSLog(@"%d,%d,%d",tmd.year,tmd.month,tmd.day);
            
    NSValue的一些用法

    NSDate

    //创建一个日期时间对象
        //获取当前时间
        NSDate *d1 = [NSDate date];
        //0时区时间,北京 东8区
        // 当前时间上+8小时,得到的就是现在时间
        NSLog(@"%@",d1);
        //2015-07-30 12:20:25 +0000
        
        //格式化日期
        //NSDateFormatter 日期格式化
        //2015年07月30日 20:20:25
        //2015-07-30 20:22:15
        NSDateFormatter *formatter = [NSDateFormatter new];
        //设置日期的显示格式的
        // yyyy 表示四位的年份
        // MM   表示2位的月份
        // dd   表示2位的天数
        // HH   表示24小时制得小数   hh  - 12小时值
        // mm   表示2位的分钟数
        // ss   表示2位的秒数
        formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        //格式化日期
        NSString *dateStr = [formatter stringFromDate:d1];
        NSLog(@"%@",dateStr);
    
    
    NSDateFormatter *formatter = [NSDateFormatter new];
        //设置日期的显示格式的
        // yyyy 表示四位的年份
        // MM   表示2位的月份
        // dd   表示2位的天数
        // HH   表示24小时制得小数   hh  - 12小时值
        // mm   表示2位的分钟数
        // ss   表示2位的秒数
        formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        
        //计算明天的此刻
        // 距现在时间 24 小时以后,明天的此刻
        NSTimeInterval t = 60*60*24;
        NSDate *tom = [NSDate dateWithTimeIntervalSinceNow:t];
        //计算昨天的时间
        NSDate *zuotian = [NSDate dateWithTimeIntervalSinceNow:-t];
        //格式化显示时间
        NSString *timeStr = [formatter stringFromDate:zuotian];
        NSLog(@"timeStr = %@",timeStr);
    
    //日期对象
            //2015-07-30 20:22:15
            //year month day
            // NSCalendar 日期类,可以帮我们快速的获取年月日 时分秒信息
            NSDate *d = [NSDate date];
            
            //创建日期的对象
            NSCalendar *cal = [NSCalendar currentCalendar];
            
    //        cal components:获取日期的哪些部分 fromDate:日期对象
           NSDateComponents *coms =  [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d];
            
            NSLog(@"year:%ld,month:%ld,day:%ld",coms.year,coms.month,coms.day);
    NSDate的一些用法

    小知识点:

    位枚举:枚举值是2的0次方、1次方、2次方...

    它的存在是为了有些方法中需要写入枚举值,但有时候我们并不需要枚举这时候可以用0来填写枚举值

    他的枚举值可以用“ | ”(或)来一起选择

    解释:
          2 的 0 次方   1        00000001

          2 的 1 次方   2        00000010

          2 的 2 次方   4        00000100

          2 的 3 次方   8        00001000

    用“ | ”或正好能把想用的枚举值都用到 例如用1和2 00000011

  • 相关阅读:
    HDOJ/HDU 2560 Buildings(嗯~水题)
    HDOJ/HDU 2555 人人都能参加第30届校田径运动会了(判断加排序~)
    POJ1703Find them, Catch them
    BZOJ2303: [Apio2011]方格染色
    BZOJ2809: [Apio2012]dispatching
    POJ1611The Suspects
    BZOJ2006: [NOI2010]超级钢琴
    BZOJ2288: 【POJ Challenge】生日礼物
    BZOJ1150: [CTSC2007]数据备份Backup
    洛谷P1316 P1824
  • 原文地址:https://www.cnblogs.com/melodyzhy/p/4687335.html
Copyright © 2011-2022 走看看