您好,登錄后才能下訂單哦!
學了這么久OC我們都知道OC中的類分為系統類和自定義的類,當我們在使用系統為我們提供的類時有時往往不能滿足我們的需要,例如,字符串NSString類提供了比較字符串的方法compare,為數組排序時系統默認的是升序,當需要為數組按降序排序時,一種途徑是需要新建一個類寫一個降序的方法,而另一個途徑就是系統提供的category(分類,類目),分類(類目,category)的目的為了給沒有源代碼的類添加方法(只能添加方法,不能添加實例變量),是擴充一個類功能的方式之一,為原有類擴充的方法會成為原類的一部分,直接用系統類對象或者系統類調用該方法, 使用即可.
分類也分為,h(接口部分)和.m(實現部分),.h文件中寫方法的聲明,.m文件中寫方法的實現,
(1),新建一個類,在新建類時選擇Objective-C category,
建立之后,在.h文件里@interface + 要擴展的類的類名 +(分類名)@end結束,
先聲明分類方法
/兩個字符串比較對象;
- (NSComparisonResult)sortDescending:(NSString *)descending;
在.m文件里實現
//兩個字符串比較對象;
- (NSComparisonResult)sortDescending:(NSString *)descending
{
return -[selfcompare:descending];
}
在main函數里可以直接使用,如:
對數組array按照降序排序
NSArray *array = @[@"dd",@"bb",@"aa",@"ee",@"mm"];
NSArray *arrDescending = [array sortedArrayUsingSelector:@selector(sortDescending:)];
NSLog(@"%@",arrDescending);
輸出結果為
(
mm,
ee,
dd,
bb,
aa
)
二, 日期類常用方法用法 NSDate
1,基本用法:
1),創建一個對象,賦值為當前日期date 創建的NSDate對象,獲得的永遠是0時區的時間,我們是東八區,需要加上8個小時
NSDate *date = [NSDatedate];
2),創建一個明天此時的日期(時間間隔是以秒為單位的)dateWithTimeIntervalSinceNow:
NSDate *tomorrow = [NSDatedateWithTimeIntervalSinceNow:24 * 60 * 60];
NSLog(@"%@",tomorrow);
創建一個昨天此時的日期
NSDate *yesterday = [NSDatedateWithTimeIntervalSinceNow:-24 * 60 * 60];
NSLog(@"%@",yesterday);
3).獲取兩個日期的時間間隔 timeIntervalSinceDate: 實現過程是前者減去后者
NSTimeInterval intervil = [tomorrow timeIntervalSinceDate:yesterday];
NSLog(@"%.1f",intervil/60/60/24);
4),比較日期的早晚
(1),獲得兩個日期中較早的日期 earlierDate:
NSDate *earlier = [tomorrow earlierDate:yesterday ];
NSLog(@"%@",earlier);
(2),獲得兩個日期中較晚的日期 laterDate:
NSDate *later = [tomorrow laterDate:yesterday ];
NSLog(@"%@",later);
(3),兩個日期比較 compare:
NSComparisonResult類型是基本數據類型duoble的重定義
NSComparisonResultcomparDate = [tomorrow compare:yesterday ];
NSLog(@"%ld",comparDate);
2,日期類與字符串的相互轉換
(1), NSDateFormatter是一個日期格式類,將日期以一定的格式進行轉換,(原理,轉換成字符串),分為三步
NSDate *dateNow = [NSDatedate];
第一步: 創建日期格式類對象
NSDateFormatter *formatter = [[NSDateFormatteralloc] init];
第二步: 指定日期格式 formatter
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
HH表示24小時制,hh表示12小時制,MM表示月份,mm表示分鐘,DD表示當前是該年的第幾天,dd表示當月天數,ss表示秒數,如果年份為yy,則輸出時只顯示年份的后兩位,如果為其他的則顯示完整年份
第三步: 轉換 stringFromDate:
NSString *dateStr = [[NSStringalloc] init];
dateStr = [formatter stringFromDate:dateNow];
(2),將日期格式轉換為NSDate對象,即將日期按照指定的格式轉換為日期格式串,
例子:
將日期格式串轉換為日期對象@"2008年05月01日10時23分1秒" NSString *datestr = @"2008年05月01日10時23分18秒";
第一步: 創建日期格式類對象
NSDateFormatter *formatter = [[NSDateFormatteralloc] init];
第二步:
(1),設置日期的格式 (有四種)
[formatter setDateStyle:NSDateFormatterFullStyle];
(2),設置時間的格式 (有四種)
[formatter setTimeStyle:NSDateFormatterFullStyle];
(3)設置日期格式(一定要和日期格式串中的日期格式保持一致)
[formatter setDateFormat:@"yyyy年MM月dd日HH時mm分ss秒"];
第三步: 轉換 dateFromString: 將格式串轉換為日期對象
NSDate *date2 = [formatter dateFromString:datestr];
NSLog(@"%@",date2);
要注意的是:日期類對象輸出默認的是0時區的時間,如: 2014-08-12 02:38:30 +0000,其實是中國標準時間上午2014-08-12 10:38:30
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。