OC中常见的结构体,以及NSNumber、NSValue、NSDate的使用
常见的结构体
NSPoint和CGPoint
NSSize和CGSize
NSRect 和 CGRect
NSPoint和CGPoint的使用
NSPoint和CGPoint是同义的
typedef CGPoint NSPoint;
CGPoint的定义
struct CGPoint{
CGFloat x;
CGFloat y;
} typedef struct CGPoint CGPoint;
typedef double CGFloat;//64位是double ,32位是float CGPoint 代表的是二维平面中的一个点
可以使用CGPointMake 和 NSMakePoint 函数创建CGPoint
NSSize和 CGSize
CGSize和NSSize是同义的
typedef CGSize NSSize; CGSize的定义
struct CGSize{
CGFloat width;
CGFloat height;
}; typedef struct CGSize CGSize; CGSize代表的是二维平面中的某个物体的尺寸(宽度和高度)
可以使用CGSizeMake 和 NSMakeSize 函数创建CGSize
NSRect 和CGRect的使用
CGRect和NSRect是同义的
typedef CGRect NSRect;
CGRect的定义
struct{
CGPoint origin;
CGSize size;
}
typedef struct CGRect CGRect;
CGRect代表的是二维平面中的某个物体的位置和尺寸
可以使用CGRectMake 和NSMakeRect函数创建CGRect
常见的结构体使用注意
苹果推荐用CG开头的
NSNumber
NSNumber的概述
NSArray\NSDictionary中只能存放OC对象,不能存放int \ float \double 等基本数据类型,如果真想把基本数据(比如 int )放进数组和Dicionary中,需要先将基本数据类型包装成OC对象
NSNumber可以将基本数据类型包装成对象,这样就可以间接将基本数据类型存进NSAray\NSDictionary中
NSNumber的创建
+(NSNumber *)numberWithInt :(int ) value;
+(NSNumber *)numberWithDouble:(double)value;
+(NSNumber *)numberWithBool:(BOOL)value; //简写的方式
NSNumber *n2 =@; int a=;
NSNumber *n3 =@(a); 取出包装前的基本数据类型的值
//从NSNumber对象中获取基本数据类型的值,通过xxValue
int numb = [n1 intValue]; //遍历
arr enumberateObjectsUsingBlock"^(id obj,NSUInteger idx,BOOL *stop ){
int num = [obj intValue];
} //字典中使用
NSMutableDictionary *productDict =[NSMutableDictionary dictionary];
for(int i=;i<=;i++){
//向字典中设置值
[productDict setValue:@ forKey:@"月饼炒辣椒"];
};
NSValue
NSValue概述
NSValue包装对象指针,CGRect结构体等
一个NSValue对象是用来存储一个C或者Objective-C数据的简单容器,它可以保存任意类型的数据,比如int , float , char ,当然也可以是指pointers,structures, and object ids .NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里,例如那些需要其元素是对象的数据结构,如NSArray 或者NSSet的实例.需要注意的是NSValue对象一直是不可枚举的 为了方便结构体和NSValue的转换,Foundation提供了以下方法
将结构体包装成NSValue对象
+(NSValue *)valueWithPoint:(NSPoint ) point;
+(NSValue *)valueWithSize:(NSSize)size;
+(NSValue *)valueWithRect:(NSRect)rect; 从NSValue对象取出之前包装的结构体
-(NSPotion)pointValue;
-(NSSize) sizeValue;
-(NSRect) rectValue; //如果要使用自己定义的结构体
MyDate d1 ={,,};
//valuewithBytes 对象的地址
//objCType 类型的说明,使用@encode(数据类型)
NSValue *va = [NSValue valueWithBytes:&d1 objCType: @encode(MyDate)];
NSDate的概述
.NSDate可以用来表示时间,可以进行一些常见的日期、时间处理
一个NSDate对象就代表一个时间
[NSDate date]返回的就是当前时间
获取当前时区的时间
-- :: +0000格林威治时间
+ 时区
.格式化日期
//定义NSDate
NSDate *d1 =[NSDate date];
//定义日期时间格式化的类
NSDateFormatter *formatter =[[NSDateFormatter alloc]init];
formatter.dateFormat =@"yyyy-MM-dd HH:mm:ss"; //把Date转换为dataStr
NSString *dateStr = [formatter stringFromDate:d1]; //设置格式
fmt.dateFormat =@"今天 HH:mm"; // HH : 24小时制
// hh : 12小时制
// yyyy : 年
// MM : 月
// dd : 号
// mm : 分钟
// ss : 秒
// Z : 时区 把NSString -->NSDate
NSString *timeStr =@"2015年02月 01日 14:38:20";
NSDate *dd = [formatter dateFromString :timeStr];
计算日期
//1)明天的此刻
NSTimeInterval secondsPerDay = * * ;
NSDate *tomorrow =[NSDate dateWithTimeIntervalSinceNow:seconsPerDay];
NSLog(@"myDate =%@",tomorrow); //2)昨天的现在
NSTimeInterval secondsPerDay1 = * *;
NSDate *now =[NSDate date];
NSDate *yesterDay =[now addTimeInterval :-secondsPerDay1];
NSLog(@"yesterDay =%@",yesterDay);
日期时间对象
集合NSCalendar 和NSDate能够做更多地日期、日期处理
获得NSCalendar对象
NSCalendar *calendar =[NSCalendar currentCalendar];
获取年月日
-(NSDateComponents *)components:(NSCalendarUnit)unitFlags formDate:(NSDate *)date;
比较两个日期的差距
-(NSDateComponents *)components:(NSCalendarUnit) unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate*) resultDate options:(NSCalendarOptions)opts;
OC中常见的结构体,以及NSNumber、NSValue、NSDate的使用的更多相关文章
- oc温习七:结构体与枚举
结构体和枚举都是一种存储复杂的数据.结构体是用户自定义的一种类型,不同类型的集合. 1.结构体的创建及使用 定义结构体类型 struct MyDate { int year; int month; i ...
- Objective-C( Foundation框架 一 常见的结构体)
常见的结构体 (NSPoint,CGPoint).(NSRange,CGRange).(NSSize,CGSize) 苹果官方推荐使用CG开头的结构体 NSRange是Foundation框架中常见的 ...
- MFC中的NMHDR结构体和NMUPDOWN结构体
建立spin控件,创建UDN_DELTAPOS一个消息函数后: void CSpinDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) { NM ...
- C语言中 不定义结构体变量求成员大小
所谓的求成员大小, 是求成员在该结构体中 用 sizeof(结构体名.结构体成员名) 求来的. 很多时候我们需要知道一个结构体成员中的某个成员的大小, 但是我们又不需要定义该结构体类型的变量(定义的话 ...
- 剔除list中相同的结构体数据
剔除list中相同的结构体数据,有三个思路:1.两层循环,逐个比较 2.使用set容器来剔除 3.使用unique方法去重 // deduplication.cpp : 定义控制台应用程序的入口点. ...
- 如何系统学习C 语言(中)之 结构体篇
1,结构体 在前面我们知道变量和数组都可以用来存储数据,变量用来存储单个数据,数组可以用来存储一组同类型的数据,但你有没有发现--它们都只适合单一属性的数据.那现实生活中,很多对象都是具有多属性的.例 ...
- 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate
Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...
- 【2016-08-18】转载:总结C++中几种结构体初始化的方法
作者:Ac_Von 博客地址:http://www.cnblogs.com/vongang/ 文章地址:http://www.cnblogs.com/vongang/archive/2011/07/3 ...
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect
本节要点:红色标记 需要记下来 1 NSRange typedef struct _NSRange { NSUInteger location; NSUInteger length ...
随机推荐
- 那些"不务正业"的IT培训公司
前言 大四下期了,现在准备找一份Java开发的实习工作,于是在各大网站上投递简历-智联招聘.51job.拉勾网,慧眼识真金的我必然会把培训机构给过滤掉,对于重庆来说招聘实习的公司少之又少,然而是智联招 ...
- 2.sparkSQL--DataFrames与RDDs的相互转换
Spark SQL支持两种RDDs转换为DataFrames的方式 使用反射获取RDD内的Schema 当已知类的Schema的时候,使用这种基于反射的方法会让代码更加简洁而且效果也很好. 通 ...
- iOS开发之instancetype
instancetype和id使用方法类似,但他们还有不同点: (1)instancetype在类型表示上,跟id一样,可以表示任何对象类型 (2)instancetype只能用在返回值类型上,不能像 ...
- Alamofire源码解读系列(九)之响应封装(Response)
本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下.我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然, ...
- 27. Remove Element - 移除元素-Easy
Description: Given an array and a value, remove all instances of that value in place and return the ...
- TypeScript入门-接口
▓▓▓▓▓▓ 大致介绍 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约. ▓▓▓▓▓▓ 接口 例子: function printLabel(labelledO ...
- 【VB超简单入门】六、基本数据类型
接下来要介绍VB的基本数据类型,为接下来学习变量和常量准备. 计算机只能处理二进制的数据,所以无论什么数据,在CPU里面处理都是一样的,类似101010这样的机器代码,但是让我们直接去写机器代码程序, ...
- response.sendRedirect 报 java.lang.IllegalStateException 异常的解决思路
今天在进行代码开发的时候,出现了 java.lang.IllegalStateException异常,response.sendRedirect("./DEFAULT.html") ...
- 将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹
将ros中的gps_msg数据导入google earth显示轨迹 [TOC] 1. 获取GPS数据 将ros中发布的gps topic输出到文本中 rostopic echo -p /gpsData ...
- POPTEST老李分享session,cookie的安全性以及区别 3
如何查看服务器端输送到我们电脑中的这些Cookie信息: 点开IE浏览器或其他浏览器,在菜单栏中有工具选项,点开有InterNet选项: Cookie名称.来源.文件格式( ...