C语言Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver

==========================

Foundation框架下的常用类

==========================

 

一.【NSNumber】

【注】像int、float、char、double等那种都是基础数据类型。

【注】继承自C语言的根基变量类型(int,float,char、double等)无法被添加到数组和字典等oc专有的数据结构中。使用不便宜,也不可能经过抬高体系等oc专有语法举办管制。

【另】能够认为,NSNumber是基础项目数据转成对象类型数据的一个类。

【注】NSNumber
就是一个类,这么些类就是为了把基础数据类型转成对象数据类型的一个类。

【注】可以先将基础项目标数目存入到nsnumber对象中,再将nsnumber存入到数组或者字典中。

【注】NSNumber能干的事体都足以用NSString来代替。所以,更常用NSString。

 

二.【NSDate】

【注】NSDate就是一个日期(时间)类。

【注】因为存在时区差距,获取的时日差8小时

 

∆        1 // 当前时刻成立NSDate

                NSDate *myDate = [NSDate date];

                NSLog(@”myDate = %@”,myDate);

 ∆       2 // 从现行始于的24小时

                NSTimeInterval secondsPerDay = 24*60*60;

                NSDate *tomorrow =
[NSDate dateWithTimeIntervalSinceNow:secondsPerDay];

                NSLog(@”myDate = %@”,tomorrow);

     3 // 基于已有日期创制日期

                 NSTimeInterval secondsPerDay1 = 24*60*60;

                NSDate *now = [NSDate date];

                NSDate *yesterDay =
[now addTimeInterval:-secondsPerDay1];

                NSLog(@”yesterDay = %@”,yesterDay);

         

   ∆      4 // 相比日期

                BOOL sameDate = [now isEqualToDate:yesterDay];

                NSLog(@”sameDate = %lu”,sameDate);

    ∆            4.1 // 获取较早的日期

                NSDate *earlierDate = [yesterDay earlierDate:now];

                NSLog(@”earlierDate  = %@”,earlierDate);

    ∆            4.2 // 较晚的日子

                NSDate *laterDate = [yesterDay laterDate:now];

                NSLog(@”laterDate  = %@”,laterDate);

三. NSCalendar

// 通过NSCALENDAR类来成立日期

// 通过NSCalendar那几个类可以友善创立一个指定的日子 

        NSDateComponents *comp = [[NSDateComponents alloc]init];

        [comp setMonth:06];

        [comp setDay:01];

        [comp setYear:2001];

        [comp setHour:24];

        NSCalendar *myCal = [[NSCalendar
alloc]initWithCalendarIdentifier:NSGregorianCalendar];

        NSDate *myDate1 = [myCal dateFromComponents:comp];

        

        NSLog(@”myDate1 = %@”,myDate1);

 

// 从已有日期获取日期

        NSCalendar *myCal = [[NSCalendar
alloc]initWithCalendarIdentifier:NSGregorianCalendar];

        unsigned units  =
NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;

        

        NSDateComponents *comp1 = [myCal components:units
fromDate:[NSDate date]];

        NSInteger month = [comp1 month];

        NSInteger year = [comp1 year];

        NSInteger day = [comp1 day];

 

ΔΔ四【NSDateFormatter】格式化日期类

 

NSDateFormatter 的局地格式介绍 

// 实例化一个NSDateFormatter对象

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

// 设定时间格式,那里可以设置成自己索要的格式

[dateFormatter setDateFormat:@”yyyy-MM-dd HH:mm:ss”];

// 用[NSDate date]可以拿到系统当下岁月

NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate
date]];

// 输出格式为:2016-03-23 13:22:13

NSLog(@”%@”,currentDateStr);

 

C语言,自定义格式

   //
那里要留心的是formatter的格式,借使是小写的”hh”,那么时间将会随之系统设置变成12钟头或者
24小时制。大写的”HH”,则强制为24小时制。 

     [dateFormatter setDateFormat:@”yyyy- MM-dd HH:mm:ss”]; 

     [dateFormatter setDateFormat:@”yyyy年MM月dd日#EEEE”];      //
EEEE为星期几,EEE为周几 

     [dateFormatter setDateFormat:@”yyyy-MM-dd HH:mm:ss”]; 

     [dateFormatter setDateFormat:@”yyyy年MMMMd日”];              //
MMMM 为xx月,一个d可以省去01日前的0

 

输出格式通setDateStyle和setTimeStyle设置,分别定义的日子和时间的格式可选一下的系统提交的格局

typedef enum {

    NSDateFormatterNoStyle     = kCFDateFormatterNoStyle,

    NSDateFormatterShortStyle  = kCFDateFormatterShortStyle,//“11/23/37”
or “3:30pm”

    NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,//\”Nov
23, 1937\”

    NSDateFormatterLongStyle   = kCFDateFormatterLongStyle,//\”November
23, 1937” or “3:30:32pm\”

    NSDateFormatterFullStyle   = kCFDateFormatterFullStyle//“Tuesday,
April 12, 1952 AD” or “3:30:42pm PST”

} NSDateFormatterStyle;

 

五.日期可比

日期之间相比可用以下格局

    – (BOOL)isEqualToDate:(NSDate *)otherDate;

    与otherDate比较,相同重临YES

 

    – (NSDate *)earlierDate:(NSDate *)anotherDate;

    与anotherDate相比,重返较早的分外日期

 

    – (NSDate *)laterDate:(NSDate *)anotherDate;

    与anotherDate相比,重回较晚的分外日期

 

    – (NSComparisonResult)compare:(NSDate *)other;

    该格局用于排序时调用:

      . 当实例保存的日期值与anotherDate相同时重返NSOrderedSame

      . 当实例保存的日子值晚于anotherDate时回来NSOrderedDescending

      . 当实例保存的日期值早于anotherDate时回来NSOrderedAscending

 

六.NSDate转NSString互相转化

         // NSDate 转NSString 并截取月份

         NSString* time = [[NSString
alloc]initWithFormat:@”%@”,myDate1];

        NSLog(@”%@”,time);

        NSRange range = {5,2};

        NSLog(@”month:%@”,[time substringWithRange:range]);

 

Δ七.iOS-NSDate 相差 8
小时 

//方法一

– (void)tDate

{

    NSDate *date = [NSDatedate];

    NSTimeZone *zone = [NSTimeZonesystemTimeZone];

    NSInteger interval = [zone secondsFromGMTForDate: date];

    NSDate *localeDate = [date  dateByAddingTimeInterval: interval];
 

    NSLog(@”%@”, localeDate);

}

//方法二

+ (NSString *)fixStringForDate:(NSDate *)date 

{

    NSDateFormatter* dateFormatter = [[NSDateFormatteralloc]init];

    [dateFormatter setDateStyle:kCFDateFormatterFullStyle];

    [dateFormatter setDateFormat:@”yyyy-MM-dd HH:mm:ss”];

    NSString *fixString = [dateFormatter stringFromDate:date]; 

    [dateFormatter release];

    return fixString;

}

 

ΔΔ【NSNull】

【注】表示空的事物有多少个

【NULL】【nil】【Nil】【NSNull】

 

NULL:表示基础项目指针为空

int * p = NULL;

 

nil:表示对象指针为空

id obj = nil;

 

Nil:表示Class变量为空

Class class = Nil;

 

NSNull:用在数组字典等数据结构中占位,作为空元素

// 唯一格局

[NSNull null]; 成立表示空的目的

 

八.归档 NSKeyedArchiver

    //  创设了一个数组,初叶化了有的数目

        NSArray* array = [[NSArray
alloc]initWithObjects:@”zhangsan”,@”lisi”,@”wanger”,@”xiaoming”, nil];

        

        // 先指定要保留的文件名称以及路径

        // NSHomeDirectory()就是当前系统的home路径

        // stringByAppendingPathComponent 添加一个文书,文件名是:file

        // 文件类型可以不写,文件名称和后缀随便

        NSString* filePath = [NSHomeDirectory()
stringByAppendingPathComponent:@”file.txt”];

        

        NSLog(@”归档文件路径:%@”,filePath);

        

        // NSKeyedArchiver 那个类是用来归档的类

        // 再次来到值代表归档是还是不是成功

        BOOL isSuccess = [NSKeyedArchiver archiveRootObject:array
toFile:filePath];

        if (isSuccess == YES) {    

            NSLog(@”文件保留成功”);

        }

       
//【注】使用那种办法归档的文本都是透过简要加密的,打不开,也是不容许打开的。

        // 解归档

        NSArray* Arr = [NSKeyedUnarchiver
unarchiveObjectWithFile:filePath];

        NSLog(@”取出的多寡是:%@”,Arr);

【阅读官方文档】

【注】提议阅读Xcode官方,官方文档非凡标准的,没有错误。

// 缺点:

1.可读性相比差。(读不懂)(官方文档都相比精简)

2.事例比较少,很少有参照demo。

 

// 优点

1.文化严苛。

2.当相见一些特殊(疑难杂症)官方文档都可以找到答案(前提是消费时间去阅读寻找)

【解决编程中难点的不二法门】

1.可以先百度。

2.请去谷歌(Google)。(谷歌(Google)出来答案99%英文文档,合作有道词典举办查看)

3.请去请教同事。

4.请看官方文档。

5.请合营有道词典查看。