Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)
1.NSNumber
将基础数类型数据转成对象数据(比如int float double BOOL long等等)
//通过NSNumber将基础数类型数据转成对象数据。
NSNumber * intNumber = [[NSNumber alloc] initWithInt:50];
NSNumber * floatNumber = [NSNumber numberWithFloat:45.3];
//xcode4.6以后,可以采用如下写法
NSNumber * doubleNumber = @3.14;
NSNumber * boolNumber2 = @YES;
//从对象中取出基础类型数据
double d = doubleNumber.doubleValue;
float f = floatNumber.floatValue;
2. NSValue
NSValue是NSNumber的父类,可以存储任何类型的数据,包括复合数据类型(数组,指针,结构体等).
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//第一个参数传第一个字节的地址,无所谓类型。
//第二个参数决定数据的大小。
//@encode将类型转成NSValue可以识别的字符串。
NSValue * value = [NSValue valueWithBytes:a objCType:@encode(int[10])];
//取出数据
int b[10];
[value getValue:b];
typedef struct
{
int id;
float height;
unsigned char flag;
}Test;
Test test1;
test1.id = 1;
test1.height = 23.5;
test1.flag = 'A';
NSValue * test = [NSValue valueWithBytes:&test1 objCType:@encode(Test)];
//声明test2,为了得到test1的值
Test test2;
//把test的值赋值到test2中
[test getValue:&test2];
3. NSNull
如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类。
NSNull值为空的对象,可以加入到数组或者词典中 [NSNull null]; 创建表示空的对象
nil -> Null-pointer to objective- c object ———对象指针为空
Nil -> Null-pointer to objective- c class ———类指针为空
NULL-> null pointer to primitive type or absence of data. ———基本类型指针为空
空指针不能用来加入到数组或字典,所以可以采用[NSNull null]的方式加入空对象。
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];
//nil 被用来作为集合结束的标志,不能填入到array和dictionary中
//[dict setObject:nil forKey:@"wrongKey”];———错误的
=============================================
课堂练习:
<1> 创建一个数组,穿插存入空对象和字符串
<2> 写一个结构体,存成NSValue,再取出来
===============================
4. NSDate
//创建当前时间,以格林尼治时间为准
NSDate * date = [NSDate date];
NSLog(@"%@", date);
//某一时间过了多少秒,创建一个新的时间点
NSDate * date2 = [NSDate dateWithTimeInterval:3600 sinceDate:date];
NSLog(@"%@", date2);
//从当前时间过了多少秒,生成新的时间点
NSDate * date3 = [NSDate dateWithTimeIntervalSinceNow:-3600];
NSLog(@"%@", date3);
//从1970/01/01 0时 GMT为准,过后多少秒,生成新的时间
NSDate * date4 = [NSDate dateWithTimeIntervalSince1970:3600];
NSLog(@"%@", date4);
//未来时间,用于暂停定时器,将定时器启动时间设为遥远的未来 Never
NSDate * futureDate = [NSDate distantFuture];
//过去时间,用于重启定时器,将定时器启动时间设为遥远的过去 ever
NSDate * pastDate = [NSDate distantPast];
NSLog(@"%@",futureDate);
NSLog(@"%@",pastDate);
//创建时间戳
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
//使用时间戳的目的,是为了自定义时间的打印格式
dateFormatter.dateFormat = @"yyyy年MM月dd日EEE HH:mm:ss.S";
dateFormatter.dateFormat = @"yyyy-MM-dd ahh时mm分ss秒";
//HH是24小时制,hh是12小时制 a表示上下午
//EEE表示周几 EEEE表示星期几
NSLog(@"%@", [dateFormatter stringFromDate:date]);
NSDate *da = [dateFormatter dateFromString:[dateFormatter stringFromDate:date]];
NSLog(@"%@",da);
NSDate
//得到当前的日期
NSDate *date = [NSDate date];
NSLog(@"date:%@",date);
//得到(24 * 60 * 60)即24小时之前的日期,dateWithTimeIntervalSinceNow:
NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow: -(24 * 60 * 60)];
NSLog(@"yesterday:%@",yesterday);
NSDateFormatter *formatter =[[[NSDateFormatter alloc] init] autorelease];
NSDate *date = [NSDate date];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease];
NSInteger unitFlags = NSYearCalendarUnit |
NSMonthCalendarUnit |
NSDayCalendarUnit |
NSWeekdayCalendarUnit |
NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit;
//int week=0;
comps = [calendar components:unitFlags fromDate:date];
int week = [comps weekday];
int year=[comps year];
int month = [comps month];
int day = [comps day];
//[formatter setDateStyle:NSDateFormatterMediumStyle];
//This sets the label with the updated time.
int hour = [comps hour];
int min = [comps minute];
int sec = [comps second];
NSLog(@"week%d",week);
NSLog(@"year%d",year);
NSLog(@"month%d",month);
NSLog(@"day%d",day);
NSLog(@"hour%d",hour);
NSLog(@"min%d",min);
NSLog(@"sec%d",sec);
//得到毫秒
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
//[dateFormatter setDateFormat:@"hh:mm:ss"]
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSLog(@"Date%@", [dateFormatter stringFromDate:[NSDate date]]);
[dateFormatter release];
Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)的更多相关文章
- Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver
========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...
- (转载)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 ...
- 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate
Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...
- (转载)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 ...
随机推荐
- Python黑科技:FuckIt.py
说起 Python 强大的地方,你可能想到是它的优雅.简洁.开发速度快,社区活跃度高.但真正使得这门语言经久不衰的一个重要原因是它的无所不能,因为社区有各种各样的第三库,使得我们用Python实现一个 ...
- 虚树总结&题单&简要题解
简介 虚树,即剔除所有无关结点,只保留询问点和询问点的相关结点(两两之间的LCA),建一棵新树,这棵新树就是虚树.通过虚树,可以有效的减小询问(甚至修改)的复杂度.设询问点的个数是\(k\),那么建虚 ...
- Spring Boot教程(一)在springboot中用redis实现消息队列
环境依赖 创建一个新的springboot工程,在其pom文件,加入spring-boot-starter-data-redis依赖: <dependency> <groupId&g ...
- sqli-labs(27)
0X01 先查询闭合 ?id=' 报错 ?id='' 正确 知道是’的闭合语句 0X02那么开始我们的注入之旅 空格过滤了 尝试一下%0a绕过 #也被过滤了 那么用and '1'='1构造闭合 ?i ...
- 你是一直认为 count(1) 比 count(*) 效率高么?
MySQL count(1) 真的比 count(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么? 有 Where 条件的 count, ...
- 黑马lavarel教程---1、lavarel目录结构
黑马lavarel教程---1.lavarel目录结构 一.总结 一句话总结: 一套视频讲的东西太少,要看多套视频 1.安装lavarel需要额外开启的模块? extension=php_filein ...
- angular 语法的应用
angular.js 一个js框架 , 是三大主流框架之一:( vue react angular ): 原先的开发:前端和后台,利用 Ajax 进行交互, 但是框架却提出了一种开发模式:mvc 这 ...
- Windows系统安装分盘
按shift + F10 打出dos窗口
- Mybaits配置多个数据库操作sql环境
mybitas可以配置sql语句适用于不同数据库下的操作,因为不同数据库sql语句可能有差别,接下来介绍如果进行操作 1.在jdbc.properprites配置驱动 jdbc.driver=com. ...
- Java基础之comparator和comparable的区别以及使用
Java基础之comparator和comparable的区别以及使用 1: 区别: .Comparable类需要实现此接口,定义在类内,不利于扩展 2 .Comparator更灵活,可以随时自定义 ...