计算机中的文件分为“二进制文件”和“文本文件”,其中图片、视频、音频等就是二进制文件,像“.txt”的文件就是文本文件。客户端与服务器端,或者客户端与客户端数据交流的格式为二进制(字节流)。在OC中使用‘NSData’类储存这些字节,在NSData类中,由实例化的对象,此对象包含了大量的字节,这些字节就是客户端想要的重要信息。

NSData

我们在读写文件或下载数据时,都需要频繁的将数据读入一个临时存储区,它通常称为缓冲区。NSData用来设置缓冲区、将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件。

创建一个空的NSData

NSData *data1 = [NSData data];

将c字符串转换成NSData

const char *str = "Hello";
NSData *data2 = [NSData dataWithBytes:str length:strlen(str)];

将OC中的字符串转换成NSData

NSString *string1 = @"你好吗";
NSData *data3 = [string1 dataUsingEncoding:NSUTF8StringEncoding];

将本地文件中的数据转换成data

NSData *data4 = [NSData dataWithContentsOfFile:@"/Users/ibokan/Desktop/homework/NSData/NSData/8EDD2DE79FF1553E50C64DCCB261BDE8.jpg"];

将数据写入本地文件

BOOL flag = [data4 writeToFile@"/Users/ibokan/Desktop/anglelababy.png" atomically:YES];
if(flag){NSLog(@"写入成功");
}//
//结果在桌面写入了由data4中数据所组成的一张图片

求data的字节长度

NSUInteger length = data.length;
NSLog("%u",length);//NSUInteger对应%u

创建一个空的mData,NSMutableData

NSMutableData *mData = [NSMutableData data];

对mData的操作,增加data4

[mData appendData:data4];

NSDate

NSDate是用于处理日期和时间的基础类,用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差运算和日期运算之间的早晚比较等。NSDate是一个封装了某一给定时刻的类,包括日期和时间。

创建NSDate对象

NSDate *date1 = [NSDate date];
//date1得到的时间是系统当前GMT时间,北京时间 = GMT + 8

NSTimeInterval是一个以秒为单位的时间片,也叫时间戳

NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:120];//表示从现在起120秒之后,如果是负号,则表示从现在起120秒之前

距离1970.01.01日期 NSTimeInterval 时间戳的时间

NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:120];//表示获取计算机开始时间,即1970-01-01 00:00:00 后120秒,即date3 = 1970-01-01 00:02:00 +0000

距离sinceDate日期 NSTimeInterval 时间戳的时间

NSDate *date4 = [NSDate dateWithTimeInterval:120 sinceDate:[NSDate date]];

通过时间追加创建date5

NSDate *date5 = [date4 dateByAddingTimeInterval:120];//相当于date5 = date4 + 120S

日期的比较

NSTimeInterval timeIntervalSince1970 = [[NSDate date] timeIntervalSince1970];//表示从1970到当前的时间戳
NSTimeInterval timeIntervalSinceNow = [[NSDate date] timeIntervalSinceNow];

基于给出时间,算出1个小时之前的时间

NSDate *dateNow = [NSDate date];
NSDate *dateHourAgo = [dateNow dateByAddingTimeInterval:-3600];

判断两个日期是否相等

BOOL flag = [dateNow isEqualToDate:dateHourAgo];
if(flag){NSLog(@"两者相等");
}
else{NSLog(@"两者不相等");
}

两个日期比较,返回较早的日期再赋值给date7

NSDate *date7 = [dateNow earlierDate:dateHourAgo];
if([date7 isEqualToDate:dateHourAgo]){NSLog(@"dateHourAgo是较早的日期");
}
else{NSLog(@"dateNow是较早的日期");
}

同理,也可以返回较晚的日期

NSDate *date8 = [dateNow laterDate:dateHourAgo];//date8得到的是dateNow

使用NSComparisonReslut进行比较

NSComparisonResult comparisonReslut = [dateNow compare:dateHourAgo];
switch(comparisonResult){case NSOrderedAscending:NSLog(@"dateHourAgo < dateNow");break;case NSOrderedSame: NSLog(@"dateHourAgo = dateNow");break;case NSOrderenDescending:NSLog(@"dateHourAgo > dateNow");
}

日历(NSCalendar)的创建

NSCalendar *currentCalendar = [NSCalendar currentCalendar];
NSDateComponents *components =[ [NSDateComponents alloc] init];
components.year = 2016;
components.month = 8;
components.day = 12;
components.hour = 12;
components.minute = 14;
components.second = 10;
NSDate *date9 = [currentCalendar dateFromComponents:components];

时区 NSTimeZone

NSArray *array = [NSTimeZone knownZoneNames];//列出所有的时区,并放入一个数组中
//指定名称参数创建一个时区
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
//指定时区缩写创建一个时区
NSTimeZone *timeZone2 = [NSTimeZoneWithAbbreviatio@"PRC"];

NSDateFormatter,将NSDate转换成字符串类型

NSDateFormatter *dateFormatter = [NSDateFormatter new];
//设置默认时区,转换成本地时区
dateFormatter.timeZone = [NSTimeZone defaultTimeZone];
//设置时间输出格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//转换成字符串
NSString *string1 = [dateFormatter stringFromDate:[NSDare date]];

将字符串转换成NSDate类型

//创建一个字符串
NSString *string2 = @"1970-01-01 08:00:00";
//设置时区
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
//设置格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate date10 = [dateFormatter dateFromString:string2];
//时间戳timeInterval
NSTimeInterval timeInterval = date10.timeIntervalSinceNow;
NSLog(@"%f",-timeInterval);//现在比date10早,timeInterval为负,所有加‘-’使其输出为正
//把秒变为分钟
int m = (int)-timeInterval/60;

OC中的常用数据类型相关推荐

  1. python中int表示的数据类型是_python中的基本数据类型之 int bool str

    一.基本数据类型 1. int  ==>  整数.主要用来进行数学运算. 2.str  ==>  字符串.可以保存少量的数据,并进行相应的操作. 3.bool  =>  布尔值.判断 ...

  2. ios中常用数据类型相互转换

    ios中常用数据类型相互转换 //1. NSMutableArray和NSArray互转 // NSArray转为NSMutableArray NSMutableArray *arrM = [arr ...

  3. Oracle中的常用的数据类型

    Oracle中的常用的数据类型: 1.字符类型: 字符串数据类型还可以依据存储空间分为固定长度的"char",和可变长度类型的vachar.nvchar两种: Char类型: Ch ...

  4. OC中的基本容器和基本数据类型

    基本数据类型 NSRange 是一个结构体,里面有两个数据成员数据类型都为NSUInteger 就是c语言中的无符号整形,一个是location表示集合的起始地址,另外一个变量是length表示从起始 ...

  5. 互联网反欺诈体系中的常用技术和数据类型

    互联网反欺诈常用的技术主要包括数据采集.特征工程.决策引擎.数据分析等几个类别: 数据采集: 主要应用于从客户端或网络获取客户相关数据的技术方法.值得强调的是,数据采集技术的使用,应当严格遵循法律法规 ...

  6. mysql中最常用到的数据类型,约束条件,以及表,字段,行的crud操作指令,function和precedure之间的区别,索引,安全,事务...

                                 数据库总结 传统记录数据的缺点:不易保存,备份困难,查找不便 数据库:存储数据的仓库,描述一个事务的基本信息 优点:1.持久化存储 2.读写速 ...

  7. 前端开发:JS中常用数据类型的转换以及使用场景集锦

    前言 在前端开发中,关于数据转换也是使用频率非常高的知识点,尤其是常见数据类型之间的相互转换的使用频率就更高了,那么本篇博文就来分享一下关于JS中常用数据类型的转换使用,分享一下,方便后期查阅使用. ...

  8. OC中常用的英文发音和注解

    OC中常用的英文 A atomic [əˈtɑːmɪk] 原子性,就是防止在未完成的时候被另外一个线程读取,造成数据错误 B barrier /ˈbæriər/ GCD异步栅栏函数:dispatch_ ...

  9. OC中数组排序的3种方法

    总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上 ...

最新文章

  1. IDBA-UD:组装非均匀覆盖度的宏基因组和单细胞数据
  2. pve安装黑群晖直通硬盘_在Proxmox VE(PVE)安装黑群晖
  3. Taro+react开发(88):taro条件渲染
  4. Python的模板:HTML代码 + 模板语法
  5. 怎么在服务器添加充值网站,云服务器怎么弄充值
  6. 谈谈如何学习R语言基础教程
  7. 计算机多媒体教室管理制度,新疆大学多媒体教室管理制度
  8. Pandas中的数据聚合方法
  9. 如何查看计算机关闭原因,电脑总是自动重启关机怎么样查找原因
  10. 【板栗糖GIS】如何重复利用arcmap图层的符号样式
  11. 如何打造自己的PoC框架-Pocsuite3-框架篇
  12. Android 图片资源
  13. 牛客网剑指offer(Python版)
  14. ubuntu16.04 查看系统可用内存
  15. 创建支持多种屏幕尺寸的Android应用
  16. 第十三届蓝桥杯JavaB组国赛H题——修路 (AC)
  17. GNU Radio系列教程(一):什么是GNU Radio?为什么我需要用GNU Radio?
  18. 拼多多的搜索的参数anti_content怎么破
  19. WPF Excel导入01
  20. 多个平台的 Java Launcher 脚本

热门文章

  1. Red Hat Linux 7.3 +VMWare 虚拟机安装实践
  2. java dump文件怎么生成和分析-JMAP用法
  3. 白话微服务 —— 大厂是怎么玩的?
  4. unity wsad 鼠标_Unity键盘WASD实现物体移动
  5. YY会是百度的YY,但百度的直播不只是YY
  6. make/Makefile
  7. Dagger2 使用详解
  8. 怎么去除latex \thanks 感谢脚注的*号
  9. 2018年关于人工智能、大数据和分析的十大预测
  10. 专利申请费用减免有哪些条件