溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

OC category (分類(lèi),類(lèi)目),日期類(lèi)常用用法

發(fā)布時(shí)間:2020-06-20 03:29:56 來(lái)源:網(wǎng)絡(luò) 閱讀:1191 作者:yjf123546 欄目:開(kāi)發(fā)技術(shù)

學(xué)了么久OC都知道OC中的類(lèi)統(tǒng)類(lèi)和自定類(lèi),當(dāng)我在使用系統(tǒng)為提供的類(lèi)時(shí)時(shí)往往不能滿(mǎn)足我的需要,例如,字符串NSString類(lèi)提供了比較字符串的方法compare,數(shù)排序時(shí)統(tǒng)認(rèn)的是升序,當(dāng)需要數(shù)按降序排序時(shí),一種途徑是需要新建一個(gè)類(lèi)寫(xiě)一個(gè)降序的方法,而另一個(gè)途徑就是系統(tǒng)提供的category(類(lèi),類(lèi)),分類(lèi)(類(lèi)目,category)的目的為了給沒(méi)有源代碼的類(lèi)添加方法(只能添加方法,不能添加實(shí)例變量),是擴(kuò)充一個(gè)類(lèi)功能的方式之一,為原有類(lèi)擴(kuò)充的方法會(huì)成為原類(lèi)的一部分,直接用系統(tǒng)類(lèi)對(duì)象或者系統(tǒng)類(lèi)調(diào)方法, 使用即可.

 分類(lèi)也分為,h(接口部分).m(實(shí)現(xiàn)部分),.h文件中寫(xiě)方法的聲明,.m文件中寫(xiě)方法的實(shí)現(xiàn),

 (1),新建一個(gè)類(lèi),在新建類(lèi)時(shí)選擇Objective-C category,

建立之后,.h文件里@interface + 要擴(kuò)展的類(lèi)的類(lèi)名 +(分類(lèi)名)@end結(jié)束,

先聲明分類(lèi)方法

/兩個(gè)字符串比較對(duì)象;

-  (NSComparisonResult)sortDescending:(NSString *)descending;

.m文件里實(shí)現(xiàn)

//兩個(gè)字符串比較對(duì)象;

- (NSComparisonResult)sortDescending:(NSString *)descending

{

    return -[selfcompare:descending];

}

 

main函數(shù)里可以直接使用,:

對(duì)數(shù)array按照降序排序

NSArray *array = @[@"dd",@"bb",@"aa",@"ee",@"mm"];

NSArray *arrDescending = [array sortedArrayUsingSelector:@selector(sortDescending:)];

 NSLog(@"%@",arrDescending);

結(jié)

(

    mm,

    ee,

    dd,

    bb,

    aa

)

 

 

, 日期類(lèi)常用方法用法 NSDate

1,基本用法:

1),創(chuàng)建一個(gè)對(duì),賦值為當(dāng)前日期date 創(chuàng)建的NSDate對(duì)象,獲得的永遠(yuǎn)是0時(shí)區(qū)的時(shí)間,我們是東八區(qū),需要加上8個(gè)小時(shí)

 

NSDate *date = [NSDatedate];

2),創(chuàng)建一個(gè)明天此時(shí)的日期(時(shí)間間隔是以秒為單位的)dateWithTimeIntervalSinceNow:

 

        NSDate *tomorrow = [NSDatedateWithTimeIntervalSinceNow:24 * 60 * 60];

        NSLog(@"%@",tomorrow);

        創(chuàng)建一個(gè)昨天此時(shí)的日期

        NSDate *yesterday = [NSDatedateWithTimeIntervalSinceNow:-24 * 60 * 60];

        NSLog(@"%@",yesterday);

        3).獲取兩個(gè)日期的時(shí)間間隔  timeIntervalSinceDate:  實(shí)現(xiàn)過(guò)程是前者減去后者

        NSTimeInterval intervil = [tomorrow timeIntervalSinceDate:yesterday];

        NSLog(@"%.1f",intervil/60/60/24);

        4),比較日期的早晚

        (1),獲得兩個(gè)日期中較早的日期 earlierDate:

        NSDate *earlier = [tomorrow earlierDate:yesterday ];

        NSLog(@"%@",earlier);

       

        (2),獲得兩個(gè)日期中較晚的日期  laterDate:

        NSDate *later = [tomorrow laterDate:yesterday ];

        NSLog(@"%@",later);

       

        

        (3),兩個(gè)日期比較   compare:

NSComparisonResult類(lèi)型是基本數(shù)據(jù)類(lèi)型duoble的重定義

        NSComparisonResultcomparDate = [tomorrow compare:yesterday ];

        NSLog(@"%ld",comparDate);

 

       

       

       

2,日期類(lèi)與字符串的相互轉(zhuǎn)換

 (1), NSDateFormatter是一個(gè)日期格式類(lèi),將日期以一定的格式進(jìn)行轉(zhuǎn)換,(原理,轉(zhuǎn)換成字符串),分為三步

 

 NSDate *dateNow = [NSDatedate];

 

 第一步: 創(chuàng)建日期格式類(lèi)對(duì)象

        NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

 

 第二步指定日期格式   formatter

 

        [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

HH表示24小時(shí)制,hh表示12小時(shí)制,MM表示月份,mm表示分鐘,DD表示當(dāng)前是該年的第幾天,dd表示當(dāng)月天數(shù),ss表示秒數(shù),如果年份為yy,則輸出時(shí)只顯示年份的后兩位,如果為其他的則顯示完整年份

 

第三步: 轉(zhuǎn)換   stringFromDate:

       NSString *dateStr = [[NSStringalloc] init];

        dateStr = [formatter stringFromDate:dateNow];

 

 

  (2),將日期格式轉(zhuǎn)換為NSDate對(duì)象,將日期按照指定的格式轉(zhuǎn)換為日期格式串,

例子:

將日期格式串轉(zhuǎn)換為日期對(duì)象@"2008050110時(shí)231"        NSString *datestr = @"2008050110時(shí)2318";

 

第一步: 創(chuàng)建日期格式類(lèi)對(duì)象

        NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

 

第二步:

        (1),設(shè)置日期的格式 (有四種)

        [formatter setDateStyle:NSDateFormatterFullStyle];

 

        (2),設(shè)置時(shí)間的格式 (有四種)

        [formatter setTimeStyle:NSDateFormatterFullStyle];

 

        (3)設(shè)置日期格式(一定要和日期格式串中的日期格式保持一致)

    [formatter setDateFormat:@"yyyyMMddHH時(shí)mmss"];

 

第三步: 轉(zhuǎn)換  dateFromString:  將格式串轉(zhuǎn)換為日期對(duì)象

       NSDate *date2 = [formatter dateFromString:datestr];

        NSLog(@"%@",date2);

 

 

要注意的是:日期類(lèi)對(duì)象輸出默認(rèn)的是0時(shí)區(qū)的時(shí)間,如: 2014-08-12 02:38:30 +0000,實(shí)是中國(guó)標(biāo)準(zhǔn)時(shí)間上午2014-08-12 10:38:30


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI