OC-Foundation框架
==========================
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);
自定义格式
[dateFormatter setDateFormat:@"yyyy- MM-dd HH:mm:ss"]; //这里要注意的是formatter的格式,如果是小写的"hh",那么时间将会跟着系统设置变成12小时或者 24小时制。大写的"HH",则强制为24小时制。
[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]);
Δ七.iOS-NSDate 相差 8 小时 ==============================
//方法一
- (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);
NSDate的常用用法==============================================
1. 创建或初始化可用以下方法 ----------------------------------------------------
用于创建NSDate实例的类方法有 + (id)date;
返回当前时间
+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; 返回以当前时间为基准,然后过了secs秒的时间
+
(id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)
secs;
返回以2001/01/01 GMT为基准,然后过了secs秒的时间
+
(id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
返回以1970/01/01 GMT为基准,然后过了secs秒的时间
+ (id)distantFuture;
返回很多年以后的未来的某⼀一天。 比如你需要⼀一个比现在(Now)晚(大)很长时间的时间值,则可以调用该方法。
+ (id)distantPast;
返回很多年以前的某⼀一天。
比如你需要⼀一个比现在(Now)早(小)大很长时间的时间值,则可以调用该方 法。
用于创建NSDate实例的实例方法有
- (id)addTimeInterval:(NSTimeInterval)secs; 返回以目前的实例中保存的时间为基准,然后过了secs秒的时间
用于初始化NSDate实例的实例方法有 - (id)init; 初始化为当前时间。类似date方法
-
(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)
secs;
初始化为以2001/01/01 GMT为基准,然后过了secs秒的时间。类似 dateWithTimeIntervalSinceReferenceDate:方法
- (id)initWithTimeInterval:(NSTimeInterval)secs
sinceDate:(NSDate *)refDate;
初始化为以refDate为基准,然后过了secs秒的时间
- (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs; 初始化为以当前时间为基准,然后过了secs秒的时间
3. 取回时间间隔可用以下方法 ------------------------------------------------------------------
- (NSTimeInterval)timeIntervalSinceDate:(NSDate
*)refDate;
以refDate为基准时间,返回实例保存的时间与refDate的时间间隔
- (NSTimeInterval)timeIntervalSinceNow;
以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时 间间隔
- (NSTimeInterval)timeIntervalSince1970;
以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT 的时间间隔
- (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT 的时间间隔
+ (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT为基准时间,返回当前时间(Now)与2001/01/01 GMT 的时间间隔
*/
// 时区类
// 获得系统时区
NSTimeZone *tz = [NSTimeZone systemTimeZone];
// 获得当前时间距离GMT时间相差的秒数!
NSInteger seconds = [tz secondsFromGMTForDate:[NSDate
date]];
// 以[NSDate date]时间为基准,间隔seconds秒后的时间! NSDate *localDate = [NSDate
dateWithTimeInterval:seconds sinceDate:[NSDate date]]; // 北 京时间
NSLog(@"localDate = %@",localDate);
// 日期和字符串相互转换
// 日期格式的类!
NSDateFormatter *df = [[NSDateFormatter alloc] init]; // 2013-11-27 11:00:57
// HH 24小时进制 hh 12小时进制
df.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *dateStr = [df stringFromDate:[NSDate date]]; NSLog(@"dateStr = %@", dateStr);
NSDate *dateTest = [df dateFromString:@"2013-11-27
11:00:57"];
NSLog(@"dateTest = %@", dateTest);//默认是格林威治时间需 要转化为北京时间
NSTimeZone *tz = [NSTimeZone systemTimeZone]; // 获得dateTest距离GMT时间相差的秒数! NSInteger seconds = [tz
secondsFromGMTForDate:dateTest];
NSDate *localDate = [NSDate dateWithTimeInterval:seconds sinceDate: dateTest]; // 北京时间
NSLog(@"localDate = %@",localDate);
【阅读官方文档】
【注】建议阅读Xcode官方,官方文档非常标准的,没有错误。
//缺点:
1.可读性比较差。(读不懂)(官方文档都比较言简意赅)
2.例子比较少,很少有参照demo。
//优点
1.知识严谨。
2.当遇到某些特殊(疑难杂症)官方文档都可以找到答案(前提是花费时间去阅读查找)
OC-Foundation框架的更多相关文章
- OC Foundation框架—集合
Foundation框架—集合 一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向 ...
- OC Foundation框架—结构体
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- OC Foundation框架—字符串
一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableA ...
- iOS - OC Foundation 框架
前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...
- [OC Foundation框架 - 20] 统计代码行数
注意: 1.变量名和函数名不要混淆调用 2.不要对文件夹进行文件的操作,没有权限 3.递归调用注意初始化变量 // // main.m // CodeLineCount // // Created ...
- OC — (Foundation框架-NSDate)
NSDate:是OC中处理日期时间的一个类,可以用来表示时间 获取当前的时间 NSDate *d = [NSDate date]; 创建日期时间对象 NSLog输出是当前时间 格林时间 格式化显示时间 ...
- [OC Foundation框架 - 23] 文件管理
A. 目录管理 NSFileManager*manager = [NSFileManagerdefaultManager];//单例模式 // 1.获取文件属性 NSString *path = @& ...
- [OC Foundation框架 - 13] NSValue
NSNumber能够包装基本数据类型称为OC对象,是因为继承了NSValue 包装结构体成OC对象 1.自带结构体 void value() { CGPoint point = CGPointMake ...
- [OC Foundation框架 - 12] NSNumber
1.概念 NSArray,NSDictionary只能放OC对象,不能放入基本数据类型 必须使用包装类NSNumber,把基本数据类型包装成OC对象 不支持自动包装解包 void number() ...
- [OC Foundation框架 - 9] NSMutableArray
可变的NSArray,可以随意添加OC对象 1.创建 void arrayCreate() { NSMutableArray *array = [NSMutableArray arrayWithO ...
随机推荐
- Verilog学习总结
1.多个always语句不能对同一变量赋值. 2.assign语句只能进行阻塞赋值,用来描述组合逻辑. 3.verilog描述方式:结构描述(门级描述和模块调用).数据流描述(assign,wire型 ...
- Team Foundation 中的错误和事件消息
Visual Studio Team System Team Foundation 中的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错 ...
- 从零到一创建ionic移动app:应用anjularjs编写ionic项目
推荐两篇文章,带你入门 ionic中文项目(作为了解ionic基础结构用):http://blog.csdn.net/i348018533/article/details/47258449/ ioni ...
- HIVE大数据出现倾斜怎么办
hive在跑数据时经常会出现数据倾斜的情况,使的作业经常reduce完成在99%后一直卡住,最后的1%花了几个小时都没跑完,通过YARN的管理界面配合日志,可以清楚其中的具体原因,这种情况就很可能 ...
- windo form 窗体布局方式
DataGridView:显示数据表后台数据绑定:List<xxx> list = new List<xxx>();dataGridView1.DataSource = lis ...
- Mac 一键显示所有隐藏文件 不要那么六好吧
系统应简洁而有效,对一般用户来说这一点尤为重要.不必要让普通用户知道的信息往往会给他们造成困扰,因而,隐藏掉他们便是个不错的选择,既可以保证系统平稳流畅运行,也可以为用户提供友好界面. 对于开发者而言 ...
- redis 笔记03 RDB 持久化、AOF持久化、事件、客户端
RDB 持久化 1. RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据. 2. SAVE命令由服务器进程直接执行保存操作,所以该命令会阻塞服务器. 3. BGSAVE由子进程执行保 ...
- phpword使用
composer 安装 https://packagist.org/packages/phpoffice/phpword 开发文档:http://phpword.readthedocs.io/en/l ...
- pt-osc使用方法
pt-osc实战运用 1.安装pt-osc,解压即可用 安装包在:10.135.2.217:data/online/software/percona-toolkit-3.0.12.tar.gz tar ...
- C语言中 ln(以自然对数e为底) lg(以十为底) 以及logab(以a为底,b为真数)的相关知识
总所周知,我们在高中学过对数函数,记作y=logax.下面是百度百科关于对数函数的描述: 对数的定义:一般地,如果ax=N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN, ...