五、類目Category
a、 類目的定義和類的定義相似。在.h檔案裡聲明,.m檔案裡實作方法。
b、 定義類目的檔案命名規則:類名+類目名稱,如 “NSString + Revert”。
@interface NSString (Extension)
-(BOOL)validateEmail;
@end
@implemention NSString (Extension)
- (BOOL)validateEmail{
//實作方法
}
類名的局限性
類目還可以覆寫現有類的方法。覆寫後,原始方法則無法調用。
類目不能為類擴充執行個體屬性。
//聲明類目
@interface NSString (Extension)
//覆寫方法
- (int)intValue;
@end
六、 數字對象的常用處理方法
NSNumber
//建立NSNumber(包裝基本資料類型)——包裝
NSNumber *intNumber = [NSNumber numberWithInt:100];
NSNumber *floatNumber = [NSNumber numberWithFloat:200];
NSNumber *longNumber = [NSNumber numberWithLong:125125325];
NSNumber *boolNumber = [NSNumber numberWithBool:YES];
NSArray *array = @[ intNumber, floatNumber, longNumber, boolNumber];
NSLog(@” array = %@”,array);
//解包
int intvalue = [intNumber intValue];
float floatvalue = [floatNumber floatValue];
long longvalue = [longNumber longValue];
bool boolvalue = [boolNumber boolValue];
//NSNumber 優化的文法
NSNumber *intNumber1 = @12;//等價于 [NSNumber numberWithInt:100]
NSNumber *floatNumber1 = @2.32f;
NSNumber *longNumber1 = @34903521123;
NSNumber *boolNumber1 = @YES;
NSNumber *charNumber1 = @’s’;
NSValue——可以對結構體進行包裝,NSValue是NSNumber的父類
NSRange rang = {10,20}
//封包
NSValue *rangValue = [NSValue valueWithRange:rang];
//解包
NSRange rang2 = [rangValue rangeValue];
NSLog(@” (%ld,%ld)”,rang2.location,rang2.lenght);
//對自定義的結構體進行封包
struct WXPoint{
float x;
float y;
}
struct WXPoint p = {50,100};
NSValue *pointValue = [NSValue value:&p withObjCType:@encode(struct WXPoint)];
//對自定義的結構體進行解包
struct WXPoint p2;
[pointValue getValue:&p2];
NSLong(@”p2.x=%f,p2.y=%f”, p2.x,p2.y);
NSNULL的使用
NSArray *nilarray = @[nil,nil,nil];//錯誤,nil不能夠存入到數組或字典中
NSNull *n1 = [NSNull null];
NSNull *n2 = [NSNull null];
NSArray *nullarray = @[@”zhangsan”,n2];
NSLog(@”nullarray = %@” ,nullarray);
for (id item in nullarray){
if(item == [NSNull]){
NSLog(@”此位置是為空的元素”);
}
}
日期類NSDate
//建立日期
NSDate *date1 = [NSDate date];
NSDate *date2 = [[NSDate alloc] init];
NSLog(@”date2:%@”,date2);
//在目前時間點的基礎上累加一個數值之後的日期,機關是秒
NSDate *date3 = [NSDate dateWithTimeIntervalSinceNow:24*60*60];
NSLog(@”date3:%@”,date3);
NSDate *date4 = [NSDate dateWithTimeIntervalSinceNow:-24*60*60];
NSLog(@”date4:%@”,date4);
//時間戳:某一日期到1970年的秒數大小,稱為該日期的時間戳。
NSDate *date1970 = [NSDate dateWithTimeTntervalSince1970:0];
NSLog(@”date1970:%@”,date1970);
NSDate *time = [NSDate dateWithTimeTntervalSince1970:11025412687];
NSLog(@” time:%@”, time);
//擷取日期的時間戳
NSDate *timeNow = [NSDate date];
NSTimeInterval time1970 = [timeNow timeIntervalSince1970]
NSLog(@”time1970=%lf”,time1970);
//日期的比較
//1,通過調用日期對象的compare方法進行比較
NSComparisonResult result = [date3 compare:date2];
if (result == NSOrderedAscending) {
NSLog(@”date3 > date2”);
}else {
NSLog(@”date3 < date2”);
}
//2.通過比較時間戳
if ([date3 timeIntervalSince1970] > [date2 timeIntervalSince1970]) {
NSLog(@”date3 > date2”);
} else {
NSLog(@”date3 < date2”);
}
日期格式化類NSDateFormatter
//日期對象 - 字元串
NSDate *nowDate = [NSDate date];
NSString *timestr = nowDate.description;
NSLog(@”%@”,timestr);
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
//設定日期格式
[dateFormatter setDateFormat:@”yyyy年MM月dd日 HH時mm分ss秒”];
NSString *dateString = [dateFormatter stringFromDate:nowDate];
NSLog(@”目前時間:%@”,dateString);
//設定時區
NSTimeZon *time = [NSTimeZone timeZoneWithName:@”America/New_York”];
//将時區配置給dateFormatter對象
[dateFormatter setTimeZone:timezone];
NSString *datestring2 = [dateFormatter stringFromDate:nowDate];
NSLog(@”格式化後2:%@”,datestring2);
//字元串--日期對象
NSString *str = @”2015年03月22日 17:06:22”;
NSDateFormatter * dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@”yyyy年MM月dd日 HH時mm分ss秒”];
NSDate *date11 = [dateFormatter2 dateFromString:str]
NSLog(@”%@”,date11);
轉載于:https://www.cnblogs.com/ihoou/p/4729477.html