黑马程序员 oc随记 NSNumber、NSValue与NSDate
2015-08-13 17:36
417 查看
------- android培训、java培训、ios培训、期待与您交流! ----------
一、NSNumber
我们之前所学的nsarray(创建数组)nsdictionary(字典)只能存放oc对象,不能存放基本数据类型的数据,如果想将基本数据类型的数据存储入数组或者字典中,nsnumber就是一个很好的方法。
nsnumber的作用是将一个基本数据类型的数据包装成一个oc对象,如此就可让基本数据类型的数据存储入数组或者字典中。
例:
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
int a=10;
float f=3.14f;
double d=3.1212;
NSNumber *num=[NSNumber
numberWithInt:a];
//包装一个int类型的基本数据
NSLog(@"%@",num);
NSMutableArray *arr=[NSMutableArray
arrayWithObject:num];
NSLog(@"%@",arr);
//此时a已经被添加入数组中,同理可得
NSNumber *num2=[NSNumber
numberWithFloat:f];
NSNumber *num3=[NSNumber
numberWithDouble:d];
[arr
addObject:num2];
[arr
addObject:num3];
NSLog(@"%@",arr);
//此时,float类型的f与double类型的d也添加入arr数组中,注意,要使用这种额外添加的方法,必须使用nsmutablearrar而不是nsarray
//接着,我们可以尝试将值从arr数组中取出.
NSNumber *num4=arr[0];//创建一个nsnumber类型的值来保存从数组中取出的数
NSNumber *num5=arr[1];
NSNumber *num6=arr[2];
NSLog(@"%@",num4);
int a2=[num4
intValue];
//使用xxxvalue来使nsnumber类型的值转化为基本数据类型
float f2=[num5 floatValue];
double d2=[num6 doubleValue];
NSLog(@"%d,%f,%lf",a2,f2,d2);
}
return 0;
}
二、NSValue
NSNumber其实是NSValue的子类,NSValue主要用来把指针,cgrect等包装成oc对象以便存储,也就是说,它除了可以包装基本类型数据外还可以包装更多的特殊类型数据以存储。
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSRect r1= NSMakeRect(0,
0, 10,
100);
NSValue *v1=[NSValue
valueWithRect:r1];
//将nsrect转化成nsvalue
NSMutableArray *m1=[NSMutableArray
arrayWithObject:v1];
//将v1存储到nsmutablearray形式的m1中
NSLog(@"%@",m1);
//打印出来便是存储在数组中的r1的值
CGPoint c1=CGPointMake(12,
31);
v1=[NSValue
valueWithPoint:c1];
[m1
addObject:v1];
NSLog(@"%@",m1);//同样可将cgpoint存储入数组中
//接着,尝试一下取出
NSValue *v2 = m1[0];
NSRect r2=[v2 rectValue];
v2=m1[1];
CGPoint c2=[v2 pointValue];
NSLog(@"%@,%@",NSStringFromRect(r2),NSStringFromPoint(c2));
//成功取出
}
return 0;
}
三、NSDate
NSDate可以用来表示时间,可以进行一些常见的日期、时间的处理
一个NSDate对象就代表一个时间,[NSDate da te]返回的就是当前的时间
例:
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSDate *d1=[NSDate
date];
NSLog(@"%@",d1);
}
return 0;
}
显示时间:2015-08-13 18:45:01.641
练习[23980:2584787] 2015-08-13 10:45:01 +0000
注意,这个时间是格林威治的时间,即经度0度的时间,要想转变成当地的时间,我们可以:
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSDate *d1=[NSDate
date];
NSLog(@"%@",d1);
NSDateFormatter *f=[NSDateFormatter
new];
f.dateFormat=@"yyyy年MM月dd日
HH:mm:ss"; //注意 @中的字母都是不可更改的,分别代表了年月日时分秒的英文字母,大小写也不可更改
NSString *s1=[f stringFromDate:d1];
NSLog(@"%@",s1);
//如此便格式化了时间,即为当地时间。
}
return 0;
}
一、NSNumber
我们之前所学的nsarray(创建数组)nsdictionary(字典)只能存放oc对象,不能存放基本数据类型的数据,如果想将基本数据类型的数据存储入数组或者字典中,nsnumber就是一个很好的方法。
nsnumber的作用是将一个基本数据类型的数据包装成一个oc对象,如此就可让基本数据类型的数据存储入数组或者字典中。
例:
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
int a=10;
float f=3.14f;
double d=3.1212;
NSNumber *num=[NSNumber
numberWithInt:a];
//包装一个int类型的基本数据
NSLog(@"%@",num);
NSMutableArray *arr=[NSMutableArray
arrayWithObject:num];
NSLog(@"%@",arr);
//此时a已经被添加入数组中,同理可得
NSNumber *num2=[NSNumber
numberWithFloat:f];
NSNumber *num3=[NSNumber
numberWithDouble:d];
[arr
addObject:num2];
[arr
addObject:num3];
NSLog(@"%@",arr);
//此时,float类型的f与double类型的d也添加入arr数组中,注意,要使用这种额外添加的方法,必须使用nsmutablearrar而不是nsarray
//接着,我们可以尝试将值从arr数组中取出.
NSNumber *num4=arr[0];//创建一个nsnumber类型的值来保存从数组中取出的数
NSNumber *num5=arr[1];
NSNumber *num6=arr[2];
NSLog(@"%@",num4);
int a2=[num4
intValue];
//使用xxxvalue来使nsnumber类型的值转化为基本数据类型
float f2=[num5 floatValue];
double d2=[num6 doubleValue];
NSLog(@"%d,%f,%lf",a2,f2,d2);
}
return 0;
}
二、NSValue
NSNumber其实是NSValue的子类,NSValue主要用来把指针,cgrect等包装成oc对象以便存储,也就是说,它除了可以包装基本类型数据外还可以包装更多的特殊类型数据以存储。
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSRect r1= NSMakeRect(0,
0, 10,
100);
NSValue *v1=[NSValue
valueWithRect:r1];
//将nsrect转化成nsvalue
NSMutableArray *m1=[NSMutableArray
arrayWithObject:v1];
//将v1存储到nsmutablearray形式的m1中
NSLog(@"%@",m1);
//打印出来便是存储在数组中的r1的值
CGPoint c1=CGPointMake(12,
31);
v1=[NSValue
valueWithPoint:c1];
[m1
addObject:v1];
NSLog(@"%@",m1);//同样可将cgpoint存储入数组中
//接着,尝试一下取出
NSValue *v2 = m1[0];
NSRect r2=[v2 rectValue];
v2=m1[1];
CGPoint c2=[v2 pointValue];
NSLog(@"%@,%@",NSStringFromRect(r2),NSStringFromPoint(c2));
//成功取出
}
return 0;
}
三、NSDate
NSDate可以用来表示时间,可以进行一些常见的日期、时间的处理
一个NSDate对象就代表一个时间,[NSDate da te]返回的就是当前的时间
例:
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSDate *d1=[NSDate
date];
NSLog(@"%@",d1);
}
return 0;
}
显示时间:2015-08-13 18:45:01.641
练习[23980:2584787] 2015-08-13 10:45:01 +0000
注意,这个时间是格林威治的时间,即经度0度的时间,要想转变成当地的时间,我们可以:
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSDate *d1=[NSDate
date];
NSLog(@"%@",d1);
NSDateFormatter *f=[NSDateFormatter
new];
f.dateFormat=@"yyyy年MM月dd日
HH:mm:ss"; //注意 @中的字母都是不可更改的,分别代表了年月日时分秒的英文字母,大小写也不可更改
NSString *s1=[f stringFromDate:d1];
NSLog(@"%@",s1);
//如此便格式化了时间,即为当地时间。
}
return 0;
}
相关文章推荐
- ZOJ 2966 Build The Electric System 最小生成树 Kruscal && Prim
- SOAPUI 断言之三
- js选择checkbox值,组织成key-value形式,传值到后台
- MySQL SubQuery学习记录
- js选择checkbox值,组织成key-value形式,传值到后台
- play framework框架进Debug,右键项目build path 空白(no actions available)等解决问题
- 【iOS官方文档翻译】UICollectionView与UICollectionViewFlowLayout
- UIAlertView提示框自动消失
- UITabBarController — 标签视图控制器
- SOAPUI 断言设置之二
- java GUI(UI创建与监听机制)
- iOS基础-UIKit框架-多控制器管理-控制器创建和控制器view的创建
- PowerBuilder系统表
- SOAPUI 断言设置
- PowerBuilder 使用JDBC连接MYSQL
- 程序入口-UIApplicationMain
- tableview click
- 部署服务的时候报错 ArgumentError: invalid byte sequence in US-ASCII
- IOS--UI--单例
- 部署服务的时候报错 ArgumentError: invalid byte sequence in US-ASCII