一、NSNumber
NSArray和NSDictionary都不能存储数字类型的数字 只能存储对象类型的数据 所以便有了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 NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
此上都是一个些普通的数据类型如何转换 相信大家都应该能看明白 在这我就不一一介绍了
二、NSValue
NSNumber是NSValue的子类 NSNumber只能存入数据类型的东西;NSValue是可以放任意类型的;比如:结构体等
存入
+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type;
实例:
// valueWithBytes: 接收一个指针, 需要传递需要包装的结构体的变量的地址
// objCType: 需要传递需要包装的数据类型 @encode Person 在这里的为结构体
NSValue *pValue = [NSValue valueWithBytes:&p objCType:@encode(Person)];
读取
- (void)getValue:(void *)value; //注意 传入的是一个指针
实例
Person res;
[pValue getValue:&res];
三、NSDate
1、NSDate创建
NSDate *now = [NSDate date];
- (instancetype)dateByAddingTimeInterval:(NSTimeInterval)ti NS_AVAILABLE(10_6, 2_0);
NSDate *date = [now dateByAddingTimeInterval:10]; //追加10秒
+ (NSTimeZone *)systemTimeZone; //系统时间
+ (NSTimeZone *)localTimeZone; //本地时间
2、时间格式化 NSDate --> NSString
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];// 创建一个时间格式化对象
formatter.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒 Z";
// 告诉时间格式化对象, 按照什么样的格式来格式化时间
NSString *res = [formatter stringFromDate:now];
NSLog(@"res = %@", res); //如果此刻输出那么就是 多少年多少分多少日。。。。。
3、NSString --> NSDate
NSString *str = @"2015-06-29 07:05:26 +0000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 注意: 如果是从NSString格式化为NSDate, 那么dateFormat的格式, 必须和字符串中的时间格式一致, 否则可能转换失败
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
NSDate *date = [formatter dateFromString:str];
NSLog(@"%@", date);
四、NSCalendar
NSCalendar *calendar1 = [NSCalendar currentCalendar]; //这是一个单例不管怎么创建都只有一个
有些地方因为东西实在太多 就截图了谅解 ??????
五、NSFileManager
NSFileManager *manager = [NSFileManager defaultManager]; //创建NSFileManager
1.判断一个文件或者文件夹是否存在
BOOL flag = [manager fileExistsAtPath:@"/Users/username/Desktop/video/AV.mp4"];
2.判断一个文件是否存在, 并且判断它是否是一个文件夹
// 注意: 该方法的返回值是说明传入的路径对应的文件或文件夹是否存在
// 第二个参数是用于保存判断结果的, 如果是一个目录, 那么就会赋值为YES, 如果不是就赋值为NO
BOOL dir = NO;
BOOL flag = [manager fileExistsAtPath:@"/Users/username/Desktop/video/AV.mp4" isDirectory:&dir];
3.获取文件或文件夹的属性
NSDictionary *info = [manager attributesOfItemAtPath:@"/Users/username/Desktop/video/AV.mp4" error:nil];
4.获取文件夹中所有的文件
//只能得到所有文件而不能得到文件夹
NSArray *res = [manager contentsOfDirectoryAtPath:@"/Users/username/Desktop/video" error:nil];
//能得到所有文件以及文件夹中的文件
NSArray *res = [manager subpathsOfDirectoryAtPath:@"/Users/username/Desktop/video" error:nil];
5.创建文件夹
// createDirectoryAtPath: 告诉系统文件夹需要创建到什么位置
// withIntermediateDirectories: 如果指定的文件中有一些文件夹不存在, 是否自动创建不存在的文件夹
// attributes: 指定创建出来的文件夹的属性
// error: 是否创建成功, 如果失败会给传入的参数赋值
// 注意: 该方法只能用于创建文件夹, 不能用于创建文件
BOOL flag = [manager createDirectoryAtPath:@"/Users/username/Desktop/abc/video" withIntermediateDirectories:YES attributes:nil error:nil];
6.创建文件
// createFileAtPath: 指定文件创建出来的位置
// contents : 文件中的内容
// attributes: 创建出来的文件的属性
// NSData : 二进制数据
// 注意: 该方法只能用于创建文件, 不能用于创建文件夹
NSString *str = @"LitterL真帅";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[manager createFileAtPath:@"/Users/username/Desktop/abc.txt" contents:data attributes:nil];