oc77--结构体,NSNumber,NSValue,NSDate,NSCalendar
//
// main.m
// OC中的常用结构体
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // 1.保存坐标的
// NSPoint === CGPoint;别名
CGPoint point = NSMakePoint(, ); // 2.保存尺寸的
// NSSize === CGSize;别名
CGSize size = NSMakeSize(, ); // 3.保存坐标和尺寸
//NSRect === NSRect;别名
CGRect rect = NSMakeRect(, , , ); // 4.在开发中苹果推荐我们使用CG开头的结构体, 也就是说NS开头的结构体一般不用 return ;
}
//
// main.m
// NSNumber
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { int age = ;
double number= 5.1;
int value = ;
//NSArray *arr1 = @[age, number, value];
//NSLog(@"arr = %@", arr1); // 1.将基本数据类型转换为对象类型,基本数据类不能存储到数组和字典中,要将基本数据类型转换为对应的类类型。
NSNumber *ageN = [NSNumber numberWithInt:age];
NSNumber *numberN = [NSNumber numberWithDouble:number];
NSNumber *valueN = [NSNumber numberWithInt:value];
NSArray *arr = @[ageN, numberN, valueN];
NSLog(@"arr = %@", arr); // 2.将对象类型转换为基本数据类型
int temp1 = [ageN intValue];
double temp2 = [numberN doubleValue];
NSLog(@"%f", temp2); // 3.基本数据类型转换对象类型简写
// 注意: 如果传入的是变量那么必须在@后面写上(), 如果传入的常量, 那么@后面的()可以省略
NSNumber *temp3 = @(temp2);
NSNumber *temp4 =@10.10; //转换层对象类型的NSNumber
NSLog(@"%@", temp3);//5.1 return ;
}
//
// main.m
// NSValue,包装数据类型到数组和字典。 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { typedef struct{
int age;
char *name;
double _height;
}Person1; Person1 p1 = {, "lnj", 1.75};
//NSArray *arr1 = @[p1]; //结构体是不能存到数据里面去的,要用NSValue包装一下。 // 1.利用NSValue包装常用的结构体
CGPoint point = NSMakePoint(, );
NSValue *value = [NSValue valueWithPoint:point];
NSArray *arr2 = @[value];
NSLog(@"%@", arr2);//("NSPoint: {10, 20}") // 2.利用NSValue包装自定义的结构体
typedef struct{
int age;
char *name;
double height;
}Person; Person p = {, "lnj", 1.75};
// valueWithBytes: 接收一个指针, 需要传递需要包装的结构体的变量的地址
// objCType: 需要传递需要包装的数据类型
NSValue *pValue = [NSValue valueWithBytes:&p objCType:@encode(Person)];
NSArray *arr = @[pValue];
NSLog(@"%@", arr);//("<1e000000 00000000 76380000 01000000 00000000 0000fc3f>") // 从NSValue中取出自定义的结构体变量
Person res;
[pValue getValue:&res];
NSLog(@"age = %i, name = %s, height = %f", res.age, res.name, res.height);//age = 30, name = lnj, height = 1.750000 return ;
}
//
// main.m
// NSDate
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // 1.NSDate创建和基本概念
// 只要是通过date方法创建的时间对象, 对象中就保存了当前的时间
NSDate *now = [NSDate date];
NSLog(@"now = %@", now);//Sun Aug 27 21:32:15 2017
// 在now的基础上追加多少秒
NSDate *date1 = [now dateByAddingTimeInterval:];
NSLog(@"date = %@", date1);// Sun Aug 27 21:32:25 2017 // 1.获取当前所处的时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];//@"Asia/Shanghai"
// 2.获取当前时区和指定时区的时间差
NSInteger seconds = [zone secondsFromGMTForDate:now];
NSLog(@"seconds = %lu", seconds);// NSDate *newDate = [now dateByAddingTimeInterval:seconds];
NSLog(@"newDate = %@", newDate);// Mon Aug 28 05:32:15 2017 // 2.时间格式化 NSDate --> NSString
// xxxx年xx月xx日 xx小时xx分钟xx秒
// xxxx/xx/xx xx/xx/xx
// xx/xx/xxxx xx/xx/xx
NSDate *now1 = [NSDate date]; // 创建一个时间格式化对象
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 告诉时间格式化对象, 按照什么样的格式来格式化时间
// yyyy 年
// MM 月
// dd 日
// HH 24小时 hh 12小时
// mm 分钟
// ss 秒钟
// Z 时区
// formatter.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒 Z";
formatter.dateFormat = @"yyyy-MM-dd HH-mm-ss"; // 利用时间格式化对象对时间进行格式化
NSString *res = [formatter stringFromDate:now1];
NSLog(@"res = %@", res);//2017-08-27 21-35-35 // NSString --> NSDate
NSString *str1 = @"2015-06-29 07:05:26 +0000";
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
// 注意: 如果是从NSString格式化为NSDate, 那么dateFormat的格式, 必须和字符串中的时间格式一致, 否则可能转换失败
formatter1.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
NSDate *date2 = [formatter1 dateFromString:str1];//Mon Jun 29 15:05:26 2015
NSLog(@"%@", date2); return ;
}
//
// main.m
// NSCalendar #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // 1.获取当前时间的年月日时分秒
// 获取当前时间
NSDate *now = [NSDate date];
NSLog(@"now = %@", now);
// 日历
NSCalendar *calendar1 = [NSCalendar currentCalendar];
// 利用日历类从当前时间对象中获取 年月日时分秒(单独获取出来)
// components: 参数的含义是, 问你需要获取什么?
// 一般情况下如果一个方法接收一个参数, 这个参数是是一个枚举 , 那么可以通过|符号, 连接多个枚举值
NSCalendarUnit type = NSCalendarUnitYear |
NSCalendarUnitMonth |
NSCalendarUnitDay |
NSCalendarUnitHour |
NSCalendarUnitMinute |
NSCalendarUnitSecond;
NSDateComponents *cmps = [calendar1 components:type fromDate:now];
NSLog(@"year = %ld", cmps.year);
NSLog(@"month = %ld", cmps.month);
NSLog(@"day = %ld", cmps.day);
NSLog(@"hour = %ld", cmps.hour);
NSLog(@"minute = %ld", cmps.minute);
NSLog(@"second = %ld", cmps.second); // 2.比较两个时间之间的差值, 比较相差多少年多少月多少日多少小时多少分钟多少秒 // 2.1过去的一个时间
NSString *str2 = @"2015-06-29 07:05:26 +0000";
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
formatter2.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
NSDate *date2 = [formatter2 dateFromString:str2];
// 2.2当前的时间
NSDate *now2 = [NSDate date]; NSLog(@"date = %@", date2);
NSLog(@"now = %@", now2); // 2.3比较两个时间
NSCalendar *calendar3 = [NSCalendar currentCalendar];
NSCalendarUnit type3 = NSCalendarUnitYear |
NSCalendarUnitMonth |
NSCalendarUnitDay |
NSCalendarUnitHour |
NSCalendarUnitMinute |
NSCalendarUnitSecond;
NSDateComponents *cmps3 = [calendar3 components:type fromDate:date2 toDate:now2 options:];
NSLog(@"%ld年%ld月%ld日%ld小时%ld分钟%ld秒钟", cmps3.year, cmps3.month, cmps3.day, cmps3.hour, cmps3.minute, cmps3.second); return ;
}
oc77--结构体,NSNumber,NSValue,NSDate,NSCalendar的更多相关文章
- 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate
Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...
- Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)
1.NSNumber 将基础数类型数据转成对象数据(比如int float double BOOL long等等) //通过NSNumber将基础数类型数据转成对象数据. NSNumber * i ...
- OC中常见的结构体,以及NSNumber、NSValue、NSDate的使用
常见的结构体 NSPoint和CGPoint NSSize和CGSize NSRect 和 CGRect NSPoint和CGPoint的使用 NSPoint和CGPoint是同义的 typedef ...
- OC NSNumber NSValue
OC NSNumber NSValue iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作. NSNumber包装类 普通初始化 NSNumber * num1 = ...
- OC07 -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)
//一: 迭代器 //数组 NSArray *arr=@[@"1",@"2",@"3",@"4",@"5&qu ...
- Objective-C中将结构体与联合体封装为NSValue对象
在Clang 3.7之前,Objective-C已经可以使用类似@100.@YES.@10.5f等字面量表示一个NSNumber对象:用类似@"xxx"的字面量表示一个NSStri ...
- iOS学习14之OC NSNumber + NSValue
1.NSNumber 数值类. 作用:实现基本数据类型与OC对象类型的相互转化. 1> NSNumber创建对象 // 初始化方法 NSNumber *num1 = [[NSNumber all ...
- Foudation框架之一些常用结构体和常用类
表示范围作用的结构体:NSRange: 有三种方式创建新的NSRange: 1.NSRange range: range.location = 17; ...
- Object-c学习之路十(NSNumber&NSValue)
// // main.m // NSNumberAndNSValue // // Created by WildCat on 13-7-26. // Copyright (c) 2013年 wildc ...
- 关于OC中直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型
关于OC直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型,我们完全可以把其转换为OC对象来进项打印调试,而不必对结构体中的成员变量进行打印.就好比我们可以使 ...
随机推荐
- UI绘图与信息、样式
UI的绘图功能是在视图尺寸确定以后,将信息和样式绘制的过程: 给信息和样式的修改提供的最后的机会. UILabel 控制行段间距的终极代码. class LineSpaceLabel: UILabel ...
- CLISTCTRL2
回顾: 刚刚写完,因为是分期写的,所以最初想好好做一下的文章格式半途而废了~说的也许会有点啰嗦,但是所有的基础用到的技术细节应该都用到了. 如果还有什么疑问,请回复留言,我会尽力解答. 如果有错误,请 ...
- vue基础---Class 与 Style 绑定
[一]绑定HTML Class (1)对象语法 ①普通绑定class <div id="area" v-bind:class="className"> ...
- Apache 和 Nginx 下的 URL 重写
URL 重写和重定向 URL 重写是将页面映射到本站另一页面, 而重定向则是将页面映射到另一主机(域名). 其中临时重定向(R=302)和永久重定向(R=301)都是亲搜索引擎的, 是 SEO 的重要 ...
- ios xmpp 发送语音图片解决方案
ios xmpp 发送语音,图片解决方案,有需要的朋友可以参考下. 目前做IM多是用的xmpp. 因为项目需求需要实现语音和图片的发送. 发送语音图片有三种方法. 1,xmpp smack.文件传输方 ...
- NOIP 前的垂死挣扎
计划每天十题吧,可能会一天水题一天难题吧.题目以杂题为主,没有专题可言. 10.11 计划: [x] P2939 [USACO09FEB] 改造路 Revamping Trails [ ] P3601 ...
- ubuntu中mysql忘记密码如何修改
1.在终端进入安装目录下:cd /etc/mysql 2.sudo cat debian.cnf 输入密码 3用如下图用户和密码登录 4.进入mysql use mysql 5.使用describe ...
- Code128条形码如何计算其宽度?如何得出其校验位?
原文链接 Code128条形码是一个非常高密的字母数字条码,能够存储需要的编码数据,它可以编码所有128个ASCII码字符,它使用最少的空间. 在Code128符号体系中,每个数据字符编码都是由11个 ...
- jupyter notebook的插件安装及文本格式修改
jupyter notebook的插件安装及文本格式修改 1.jupyter notebook拓展插件安装 启动jupyter notebook : 打开控制台输入命令 jupyter noteboo ...
- python学习,使用requests库来模拟登录github,post请求。
这次我们要模拟登录的页面是 https://github.com/login 首先我们先尝试着登陆一遍分析一下请求, 打开开发者工具下的network选项, 可以很清楚的看到这个会话session,而 ...