Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver
==========================
Foundation框架下的常用类
==========================
一.【NSNumber】
【注】像int、float、char、double等这种都是基础数据类型。
【注】继承自C语言的基础变量类型(int,float,char、double等)不能被添加到数组和字典等oc专有的数据结构中。使用不方便,也不能通过添加类别等oc专有语法进行管理。
【另】可以认为,NSNumber是基础类型数据转成对象类型数据的一个类。
【注】NSNumber 就是一个类,这个类就是为了把基础数据类型转成对象数据类型的一个类。
【注】可以先将基础类型的数据存入到nsnumber对象中,再将nsnumber存入到数组或者字典中。
【注】NSNumber能干的事情都可以用NSString来取代。所以,更常用NSString。
二.【NSDate】
【注】NSDate就是一个日期(时间)类。
【注】因为存在时区差异,获取的时间差8小时
∆ 1 // 当前时间创建NSDate
NSDate *myDate = [NSDate date];
NSLog(@"myDate = %@",myDate);
∆ 2 // 从现在开始的24小时
NSTimeInterval secondsPerDay = 24*60*60;
NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];
NSLog(@"myDate = %@",tomorrow);
3 // 根据已有日期创建日期
NSTimeInterval secondsPerDay1 = 24*60*60;
NSDate *now = [NSDate date];
NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];
NSLog(@"yesterDay = %@",yesterDay);
∆ 4 // 比较日期
BOOL sameDate = [now isEqualToDate:yesterDay];
NSLog(@"sameDate = %lu",sameDate);
∆ 4.1 // 获取较早的日期
NSDate *earlierDate = [yesterDay earlierDate:now];
NSLog(@"earlierDate = %@",earlierDate);
∆ 4.2 // 较晚的日期
NSDate *laterDate = [yesterDay laterDate:now];
NSLog(@"laterDate = %@",laterDate);
三. NSCalendar
// 通过NSCALENDAR类来创建日期
// 通过NSCalendar这个类可以自己创建一个指定的日期
NSDateComponents *comp = [[NSDateComponents alloc]init];
[comp setMonth:06];
[comp setDay:01];
[comp setYear:2001];
[comp setHour:24];
NSCalendar *myCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *myDate1 = [myCal dateFromComponents:comp];
NSLog(@"myDate1 = %@",myDate1);
// 从已有日期获取日期
NSCalendar *myCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
unsigned units = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;
NSDateComponents *comp1 = [myCal components:units fromDate:[NSDate date]];
NSInteger month = [comp1 month];
NSInteger year = [comp1 year];
NSInteger day = [comp1 day];
ΔΔ四【NSDateFormatter】格式化日期类
NSDateFormatter 的一些格式介绍
// 实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 设定时间格式,这里可以设置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// 用[NSDate date]可以获取系统当前时间
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
// 输出格式为:2016-03-23 13:22:13
NSLog(@”%@”,currentDateStr);
自定义格式
// 这里要注意的是formatter的格式,如果是小写的"hh",那么时间将会跟着系统设置变成12小时或者 24小时制。大写的"HH",则强制为24小时制。
[dateFormatter setDateFormat:@"yyyy- MM-dd HH:mm:ss"];
[dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"]; // EEEE为星期几,EEE为周几
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setDateFormat:@"yyyy年MMMMd日"]; // MMMM 为xx月,一个d可以省去01日前的0
输出格式通setDateStyle和setTimeStyle设置,分别定义的日期和时间的格式可选一下的系统给出的方法
typedef enum {
NSDateFormatterNoStyle = kCFDateFormatterNoStyle,
NSDateFormatterShortStyle = kCFDateFormatterShortStyle,//“11/23/37” or “3:30pm”
NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,//\"Nov 23, 1937\"
NSDateFormatterLongStyle = kCFDateFormatterLongStyle,//\"November 23, 1937” or “3:30:32pm\"
NSDateFormatterFullStyle = kCFDateFormatterFullStyle//“Tuesday, April 12, 1952 AD” or “3:30:42pm PST”
} NSDateFormatterStyle;
五.日期比较
日期之间比较可用以下方法
- (BOOL)isEqualToDate:(NSDate *)otherDate;
与otherDate比较,相同返回YES
- (NSDate *)earlierDate:(NSDate *)anotherDate;
与anotherDate比较,返回较早的那个日期
- (NSDate *)laterDate:(NSDate *)anotherDate;
与anotherDate比较,返回较晚的那个日期
- (NSComparisonResult)compare:(NSDate *)other;
该方法用于排序时调用:
. 当实例保存的日期值与anotherDate相同时返回NSOrderedSame
. 当实例保存的日期值晚于anotherDate时返回NSOrderedDescending
. 当实例保存的日期值早于anotherDate时返回NSOrderedAscending
六.NSDate转NSString互相转化
// NSDate 转NSString 并截取月份
NSString* time = [[NSString alloc]initWithFormat:@"%@",myDate1];
NSLog(@"%@",time);
NSRange range = {5,2};
NSLog(@"month:%@",[time substringWithRange:range]);
//方法一
- (void)tDate
{
NSDate *date = [NSDatedate];
NSTimeZone *zone = [NSTimeZonesystemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date dateByAddingTimeInterval: interval];
NSLog(@"%@", localeDate);
}
//方法二
+ (NSString *)fixStringForDate:(NSDate *)date
{
NSDateFormatter* dateFormatter = [[NSDateFormatteralloc]init];
[dateFormatter setDateStyle:kCFDateFormatterFullStyle];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *fixString = [dateFormatter stringFromDate:date];
[dateFormatter release];
return fixString;
}
ΔΔ【NSNull】
【注】表示空的事物有四个
【NULL】【nil】【Nil】【NSNull】
NULL:表示基础类型指针为空
int * p = NULL;
nil:表示对象指针为空
id obj = nil;
Nil:表示Class变量为空
Class class = Nil;
NSNull:用在数组字典等数据结构中占位,作为空元素
// 唯一方法
[NSNull null]; 创建表示空的对象
八.归档 NSKeyedArchiver
// 创建了一个数组,初始化了一些数据
NSArray* array = [[NSArray alloc]initWithObjects:@"zhangsan",@"lisi",@"wanger",@"xiaoming", nil];
// 先指定要保存的文件名称以及路径
// NSHomeDirectory()就是当前系统的home路径
// stringByAppendingPathComponent 添加一个文件,文件名是:file
// 文件类型可以不写,文件名称和后缀随便
NSString* filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"file.txt"];
NSLog(@"归档文件路径:%@",filePath);
// NSKeyedArchiver 这个类是用来归档的类
// 返回值代表归档是否成功
BOOL isSuccess = [NSKeyedArchiver archiveRootObject:array toFile:filePath];
if (isSuccess == YES) {
NSLog(@"文件保存成功");
}
//【注】使用这种方法归档的文件都是经过简单加密的,打不开,也是不允许打开的。
// 解归档
NSArray* Arr = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSLog(@"取出的数据是:%@",Arr);
【阅读官方文档】
【注】建议阅读Xcode官方,官方文档非常标准的,没有错误。
// 缺点:
1.可读性比较差。(读不懂)(官方文档都比较言简意赅)
2.例子比较少,很少有参照demo。
// 优点
1.知识严谨。
2.当遇到某些特殊(疑难杂症)官方文档都可以找到答案(前提是花费时间去阅读查找)
【解决编程中问题的方法】
1.可以先百度。
2.请去Google。(Google出来答案99%英文文档,配合有道词典进行查阅)
3.请去请教同事。
4.请看官方文档。
5.请配合有道词典查看。
Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver的更多相关文章
- Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)
1.NSNumber 将基础数类型数据转成对象数据(比如int float double BOOL long等等) //通过NSNumber将基础数类型数据转成对象数据. NSNumber * i ...
- (转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java ...
- OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于J ...
- (转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray ...
- OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArr ...
- (转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类
昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类, ...
- OC学习篇之---Foundation框架中的NSDictionary类以及NSMutableDictionary类
今天来看一下Foundation框架中的NSDictionary类,NSMutableDictionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和 ...
- OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类
昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/4 ...
- iOS Foundation框架简介 -1.常用结构体的用法和输出
1.安装Xcode工具后会自带开发中常用的框架,存放的地址路径是: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.plat ...
随机推荐
- Cowboy 开源 WebSocket 网络库
Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Pro ...
- Linux 中我该如何备份系统
系统备份概述 在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情.由于 Linux 系统本身的优越性,系统的备份和还原还是比较容易的.主要表现在以下方面: Linux ...
- 创建一个Phone实体,完成多页面的电话簿项目
添加实体 在类库CORE中添加: [Table("PbPhones")] public class Phone : CreationAuditedEntity<long> ...
- TODO:这是一个我的自媒体
TODO:这是一个我的自媒体 自媒体(外文名:We Media)又称"公民媒体"或"个人媒体",是指私人化.平民化.普泛化.自主化的传播者,以现代化.电子化的手 ...
- ASP.NET MVC中利用AuthorizeAttribute实现访问身份是否合法以及Cookie过期问题的处理
话说来到上海已经快半年了,时光如白驹过隙,稍微不注意,时间就溜走了,倒是没有那么忙碌,闲暇之际来博客园还是比较多的,记得上次在逛博问的时候看到有同志在问MVC中Cookie过期后如何作相关处理,他在阐 ...
- CI Weekly #9 | 揭秘阿里 Docker 化实践之路
2017年悄然而至,对 flow.ci 你有什么新的期待呢?新的一年,flow.ci会越来越强大好用,希望继续得到你的支持与反馈.最近,我们做了如下的「功能优化」与「问题修复」,看看有没有你想要的: ...
- iOS 关于PCH文件(全局文件)的介绍
1.pch文件是什么 pch文件即 扩展名为.pch的预编译文件.是将工程中较稳定的不会经常修改的代码预先编译好,放在一个公共的文件(.pch)里. 2.pch 文件的作用 A.存放宏. 比如 #d ...
- 解析大型.NET ERP系统架构设计 Framework+ Application 设计模式
我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应该具备良好的可扩展性和可维护性,系统中的功能紧密关联.除去业务上的复杂性,如何设计这样的一个协 ...
- 【兼容写法】HttpServerUtility.Execute 在等待异步操作完成时被阻止。关键词:MVC,分部视图,异步
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html MVC6之前的版本,对分部视图的异步支持不是很好 问题: 视图里面有分布视图:@{ ...
- Java资源大全中文版(Awesome最新版)
Awesome系列的Java资源整理.awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站 ...