您好,登錄后才能下訂單哦!
學(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ì)象@"2008年05月01日10時(shí)23分1秒" NSString *datestr = @"2008年05月01日10時(shí)23分18秒";
第一步: 創(chuàng)建日期格式類(lèi)對(duì)象
NSDateFormatter *formatter = [[NSDateFormatteralloc] init];
第二步:
(1),設(shè)置日期的格式 (有四種)
[formatter setDateStyle:NSDateFormatterFullStyle];
(2),設(shè)置時(shí)間的格式 (有四種)
[formatter setTimeStyle:NSDateFormatterFullStyle];
(3)設(shè)置日期格式(一定要和日期格式串中的日期格式保持一致)
[formatter setDateFormat:@"yyyy年MM月dd日HH時(shí)mm分ss秒"];
第三步: 轉(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
免責(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)容。