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

时间: 2024-08-10 17:18:00

Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)的相关文章

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

前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java中集合的思想,应该还有一个Set,是的,OC中有NSSet和NSMutableSet这两个类的,但是,这里我为什么不单独介绍了呢?因为他的操作和NSArray是非常相似的,只是他和NSArray有一个区别就是他不能放重复数据,而且他也是无序的.其他没什么了,所以就不单独介绍了,而且NSSet在后面的

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

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

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

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类: http://blog.csdn.net/jiangwei0910410003/article/details/41788223 今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的.

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

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的. 下面就先来看一下NSArray类: 一.NSArray类 1 // 2 // main.m 3 // 16_NSArray 4 /

黑马程序员--oc基础第十篇(foundation框架下、集合)

十 . oc基础(Foundation框架下) 1.下面介绍几种OC对象类型的存储结构:NSArray,NSDictionary,NSSet,以及基本数据类型封装类. NSNumber:*既然这几种数据结构都是用来存放对象类型的那么基本数据类型想要放入其中就要先对他们进行封装.使用NSNumber对基本数据类型进行封装. // // Created by keeganlee on 15/3/2. // Copyright (c) 2015年 keeganlee. All rights reser

黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate

Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber.这是因为很多类(如NSArray)都要求使用对象,而int不是对象.NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象. 此外,还可以使用实例方法为先前分配的NSNumber对象设定指定的值,这些都是以initWith开头,比如in

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

今天来看一下Foundation框架中的NSDictionary类,NSMutableDictionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的. 一.NSDictionary类 [objc] view plain copy // //  main.m //  19_NSDictionary // //  Created by jiangwei on 14-10-

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

昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/41809719,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的.

iOS Foundation 框架中 Mutable 的类们

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Mutable 对于那些不能直接对其中内容进行更改的类来说,是一种扩展方式,象数值这类的,不涉及到指针的,就没有 Mutable 子类,可能是因为