參考自xx_cc的簡書文章
NSNumber
因?yàn)镹SArray和NSDictionary都無法存儲基本數(shù)據(jù)類型,所以NSNumber就是用來將基本數(shù)據(jù)類型轉(zhuǎn)化為對象,然后存入數(shù)組或者字典中的又沾。
- 基本數(shù)據(jù)類型轉(zhuǎn)化為NSNumber對象
+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithFloat:(float)value;
+ (NSNumber *)numberWithDouble:(double)value;
+ (NSNumber *)numberWithBool:(BOOL)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value;
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
也可以使用@直接向基本數(shù)據(jù)類型封裝為對象
@10 代表是1個NSNumber對象弊仪,這個對象中包裝的是整形的10。如果后面的數(shù)據(jù)是1個變量捍掺,那么這個變量就必須要使用小括弧括起來
- NSNumber對象轉(zhuǎn)化為基本數(shù)據(jù)類型
@property (readonly) char charValue;
@property (readonly) unsigned char unsignedCharValue;
@property (readonly) short shortValue;
@property (readonly) unsigned short unsignedShortValue;
@property (readonly) int intValue;
@property (readonly) unsigned int unsignedIntValue;
@property (readonly) long longValue;
@property (readonly) unsigned long unsignedLongValue;
@property (readonly) long long longLongValue;
@property (readonly) unsigned long long unsignedLongLongValue;
@property (readonly) float floatValue;
@property (readonly) double doubleValue;
@property (readonly) BOOL boolValue;
@property (readonly) NSInteger integerValue;
@property (readonly) NSUInteger unsignedIntegerValue;
NSValue
NSRange撼短、CGPoint再膳、CGSize挺勿、CGRect這些結(jié)構(gòu)體,他們的變量沒有辦法存儲到集合之中喂柒,因此需要先將這些結(jié)構(gòu)體變量存儲到OC對象中不瓶,再將OC對象存儲到集合之中,NSValue類的對象就是用來包裝結(jié)構(gòu)體變量的灾杰。
NSDate
獲得當(dāng)前時間蚊丐,得到的是當(dāng)前系統(tǒng)的格林威治時間,0時區(qū)的時間艳吠。
NSDate *date = [NSDate date]; // Sat Jan 5 16:56:27 2019
格式化輸出日期
- 先創(chuàng)建一個NSDateFormatter對象
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
- 告訴這個日期格式化器對象需要的格式
formatter.dateFormat = @"yyyy年MM月dd日 HH點(diǎn)mm分ss秒";
- 使用日期格式化器,將指定的日期轉(zhuǎn)換指定格式的字符串
NSString *str =[formatter stringFromDate:date];
注意: NSDate取到的時間是格林威治的時間麦备,而NSDateFormatter轉(zhuǎn)換成字符串以后,會自動轉(zhuǎn)換為當(dāng)前系統(tǒng)的時區(qū)的時間。
NSDate與字符串
- 將日期類型換換為字符串
- (NSString *)stringFromDate:(NSDate *)date;
- 將字符串轉(zhuǎn)換為日期對象
- (NSDate *)dateFromString:(NSString *)string;
NSDate計(jì)算時間
- 在當(dāng)前時間的基礎(chǔ)之上凛篙,新增或減少指定的時間黍匾,得到的一個新的時間
+ (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
- 求兩個時間之間的差
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;
- 得到NSDate中的年月日時分秒
NSDate *date = [NSDate date];
//1.創(chuàng)建1個日歷對象. 調(diào)用類方法currentCalendar得到1個日歷對象.
NSCalendar *calendar = [NSCalendar currentCalendar];
//2.指定日歷對象取到日期的對象的那些部分. 是要取那1個時間對象的部分.
// 返回1個日期組件對象.這個對象中就有指定日期的指定部分.
NSDateComponents *com = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date];
NSLog(@"%ld-%ld-%ld",com.year,com.month,com.day);