==========================

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]);

Δ七.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);

【阅读官方文档】

【注】建议阅读Xcode官方,官方文档非常标准的,没有错误。

// 缺点:

1.可读性比较差。(读不懂)(官方文档都比较言简意赅)

2.例子比较少,很少有参照demo。

// 优点

1.知识严谨。

2.当遇到某些特殊(疑难杂症)官方文档都可以找到答案(前提是花费时间去阅读查找)

【解决编程中问题的方法】

1.可以先百度。

2.请去Google。(Google出来答案99%英文文档,配合有道词典进行查阅)

3.请去请教同事。

4.请看官方文档。

5.请配合有道词典查看。

Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver的更多相关文章

  1. Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)

    1.NSNumber 将基础数类型数据转成对象数据(比如int  float double BOOL  long等等) //通过NSNumber将基础数类型数据转成对象数据. NSNumber * i ...

  2. (转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

    前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java ...

  3. OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

    1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于J ...

  4. (转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

    在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray ...

  5. OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

    我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArr ...

  6. (转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

    昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类, ...

  7. OC学习篇之---Foundation框架中的NSDictionary类以及NSMutableDictionary类

    今天来看一下Foundation框架中的NSDictionary类,NSMutableDictionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和 ...

  8. OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

    昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/4 ...

  9. iOS Foundation框架简介 -1.常用结构体的用法和输出

    1.安装Xcode工具后会自带开发中常用的框架,存放的地址路径是: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.plat ...

随机推荐

  1. 微软将向Linux用户提供SQL Server程序

    微软公司(Microsoft Corp., MSFT)将向Linux操作系统的用户提供旗下一项最赚钱的产品,这是该公司几年前无法想像的举措.这家软件巨头周一表示,将向免费的Linux Server提供 ...

  2. .NET面试题系列[5] - 垃圾回收:概念与策略

    面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...

  3. 好好了解一下Cookie

    Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新 ...

  4. ASP.NET MVC 5 Web编程3 -- Controller的应用及扩展

    Controller基础 一. 访问修饰符 1.1 类的访问修饰符 Controller类的访问修饰符必须是public,url才能被拦截. internal能编译通过,但无法拦截url请求.priv ...

  5. Android开发学习之路-记一次CSDN公开课

    今天的CSDN公开课Android事件处理重难点快速掌握中老师讲到一个概念我觉得不正确. 原话是这样的:点击事件可以通过事件监听和回调两种方法实现. 我一听到之后我的表情是这样的: 这跟我学的看的都不 ...

  6. SQL Server-简单查询示例(十一)

    前言 本节我们讲讲一些简单查询语句示例以及需要注意的地方,简短的内容,深入的理解,Always to review the basics. EOMONTH 在SQL Server 2012的教程示例中 ...

  7. 第二章 consul的安装和启动

    安装环境: mac:64bit(查看mac位数:打开终端-->"uname -a") consul_0.6.4_darwin_amd64.zip和consul_0.6.4_w ...

  8. 【NLP】Python NLTK 走进大秦帝国

    Python NLTK 走进大秦帝国 作者:白宁超 2016年10月17日18:54:10 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公 ...

  9. Oracle迁移:Linux->Windows

    源环境:RHEL6.4 + Oracle 11.2.0.4 目的环境:Windows 2003 需求:研发测试环境的Oracle数据库从Linux迁移到Windows,可以停机. 1.Windows安 ...

  10. ARM CPU大小端

    ARM CPU大小端: 大端模式:低位字节存在高地址上,高位字节存在低地址上 小端模式:高位字节存在高地址上,低位字节存在低地址上 STM32属于小端模式,简单的说,比如u32 temp=0X1234 ...