//
// 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的更多相关文章

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

    Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...

  2. Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)

    1.NSNumber 将基础数类型数据转成对象数据(比如int  float double BOOL  long等等) //通过NSNumber将基础数类型数据转成对象数据. NSNumber * i ...

  3. OC中常见的结构体,以及NSNumber、NSValue、NSDate的使用

    常见的结构体 NSPoint和CGPoint NSSize和CGSize NSRect 和 CGRect NSPoint和CGPoint的使用 NSPoint和CGPoint是同义的 typedef ...

  4. OC NSNumber NSValue

    OC NSNumber NSValue iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作. NSNumber包装类 普通初始化 NSNumber * num1 = ...

  5. OC07 -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)

    //一: 迭代器 //数组 NSArray *arr=@[@"1",@"2",@"3",@"4",@"5&qu ...

  6. Objective-C中将结构体与联合体封装为NSValue对象

    在Clang 3.7之前,Objective-C已经可以使用类似@100.@YES.@10.5f等字面量表示一个NSNumber对象:用类似@"xxx"的字面量表示一个NSStri ...

  7. iOS学习14之OC NSNumber + NSValue

    1.NSNumber 数值类. 作用:实现基本数据类型与OC对象类型的相互转化. 1> NSNumber创建对象 // 初始化方法 NSNumber *num1 = [[NSNumber all ...

  8. Foudation框架之一些常用结构体和常用类

    表示范围作用的结构体:NSRange:       有三种方式创建新的NSRange: 1.NSRange range:            range.location = 17;         ...

  9. Object-c学习之路十(NSNumber&NSValue)

    // // main.m // NSNumberAndNSValue // // Created by WildCat on 13-7-26. // Copyright (c) 2013年 wildc ...

  10. 关于OC中直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型

    关于OC直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型,我们完全可以把其转换为OC对象来进项打印调试,而不必对结构体中的成员变量进行打印.就好比我们可以使 ...

随机推荐

  1. js类型识别

    typeof总结: 可以识别标准类型(Null除外) 不能识别具体的对象类型(Function除外) Object.prototype.toString总结: 可以识别标准类型和内置对象类型 不能识别 ...

  2. Win7 下 PB (PowerBuilder) Insert Control 崩溃的解决办法

    环境: WIN7 x86  PB8.0, x64系统目录不同,不过也可以试试 Insert -> OLE... -> Insert Control  - 崩溃 如果网上提供的办法解决不了你 ...

  3. vue基础---条件渲染

    (1)v-if条件渲染 v-if 指令用于条件性地渲染一块内容.这块内容只会在指令的表达式返回 truthy 值的时候被渲染. 可以用 v-else 添加一个“else 块”: ①表达式 <di ...

  4. ERROR: Field 'PostId' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute statement

    例子: Post p = new Post(); p.setPostId(3); p.setPostName("技术"); 在执行数据保持时提示session.save(p); 的 ...

  5. 2018NOIP普及T4---对称二叉树

    题目 对称二叉树   题目描述 思路 检查是否符合对称条件 条件很简单——结构对称&&点权对称 要做到点权对称其实也就顺便结构对称了 于是条件可以简化为点权对称 可以考虑并行搜索 bo ...

  6. Ubuntu安装Foxit PDF阅读器

    最近使用Ubuntu自带的PDF阅读器,发现使用体验较差,打算安装FoxitReader(可能是我习惯了Foxit和Adobe) Foxit官网 对系统平台要求如下:(支持Linux) 继续摸索了一下 ...

  7. OpenCV+Python识别车牌和字符分割的实现

    本篇文章主要基于python语言和OpenCV库(cv2)进行车牌区域识别和字符分割,开篇之前针对在python中安装opencv的环境这里不做介绍,可以自行安装配置! 车牌号检测需要大致分为四个部分 ...

  8. 【04】AngularJS 表达式

    AngularJS 表达式 AngularJS 使用 表达式 把数据绑定到 HTML. AngularJS 表达式 AngularJS 表达式写在双大括号内:{{ expression }}. Ang ...

  9. css & no margin & print pdf

    css & no margin & print pdf no header & no footer https://stackoverflow.com/questions/46 ...

  10. codeforces 371D

    #include<stdio.h> #define N 210000 struct node { int x,next; __int64 count,vec; }pre[N]; int n ...