前言

    public class NSData : NSObject, NSCopying, NSMutableCopying, NSSecureCodingpublic class NSMutableData : NSData
  • NSData 和它的可变长子类 NSMutableData 是字节缓冲区的对象化封装。我们可以获得简单缓冲区,并进行一些转换操作。通常我们并不会直接创建字节数据,而是从其他类型的内容转换成字节数据。

  • 所谓简单缓冲区,就是缓冲区内只包含数据,无内嵌指针。

1、NSData 的创建

    // 由字符串创建let swiftString:String = "Hello World"let nsString:NSString = "hello world"// allowLossyConversion 表示在转换过程中是否允许字符进行必要的删减或者替换  let data1:NSData? = swiftString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)let data2:NSData? = nsString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)// 由已知数据创建,两个对象的地址不相同let data3:NSData = NSData(data: data1!)// 由文件创建let data4:NSData? = NSData(contentsOfFile: NSHomeDirectory().stringByAppendingString("/Desktop/test.txt"))// 由 URL 创建let data5:NSData? = NSData(contentsOfURL: NSURL(string: "http://www.baidu.com")!)// 可变 Data 的创建// 初始化时指定对象拥有的字节空间大小,在需要时会增加内存空间,在初始化时并没有分配内存空间let data6:NSMutableData? = NSMutableData(capacity: 0)// 初始化时为对象分配指定长度的归零字节let data7:NSMutableData? = NSMutableData(length: 10)

2、数据的长度

    let data1:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!// 指定空间大小,不分配空间let data2:NSMutableData = NSMutableData(capacity: 10)!// 分配指定长度的归零字节let data3:NSMutableData = NSMutableData(length: 10)!// 字节长度的计算,NSData 的 length 属性是只读的,字节长度的计算,NSMutableData 的 length 可以被重新赋值let num1:Int = data1.lengthlet num2:Int = data2.lengthlet num3:Int = data3.length// 重新设置空间的大小,对象的字节空间会相应的扩充或者截断。如果新设置的大小大于当前大小,// 会在当前数据的末尾处用归零字节来进行填充。如果新设置的大小小于当前大小,数据会被截断抛弃。data2.length = 5data3.length = 5// 扩充指定长度,新添加的空间被设置为归零字节data2.increaseLengthBy(7)data3.increaseLengthBy(7)

3、数据的获取

    let data:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!// 默认为内容数据的十六进制编码let dataFromNSData1 = data.description                      let dataFromNSData2:NSString? = NSString(data: data, encoding: NSUTF8StringEncoding)let dataFromNSData3:NSString? = NSString(bytes: data.bytes, length: data.length, encoding: NSUTF8StringEncoding)

4、NSData 的比较

    let data1:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!let data2:NSData = NSData(data: data1)// 比较两个对象的地址是否一致let bl1:Bool = data1 === data2// 比较两个对象的长度及每字节的数据是否相同let bl2:Bool = data1.isEqualToData(data2)

5、NSData 的存储

    let data:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!// 将数据写入 filelet bl1:Bool = data.writeToFile(NSHomeDirectory().stringByAppendingString("/Desktop/test.txt"), atomically: true)// 将数据写入 URL,该方法只支持 file:// 路径的文件写入,并不能对远程如 http:// 等类型文件进行写入let bl2:Bool = data.writeToURL(NSURL(string: "file://".stringByAppendingFormat("%@%@", NSHomeDirectory(), "/Desktop/test.txt"))!, atomically: true)

6、NSData 与 字符串 的相互转换

    let string:String = "Hello World"// 字符串 转 NSDatalet data:NSData = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!// NSData 转 字符串let utf8String:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)!

7、NSData 与 Base64编码字符串 的相互转换

    let data:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!// NSData 转换为 Base64编码的字符串let base64String:String = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))// Base64编码的字符串 转换为 NSDatalet nsData:NSData? = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))

iOS - Swift NSData 数据相关推荐

  1. iOS - Swift NSData 数据

    本文目录 前言 1.NSData 的创建 2.数据的长度 3.数据的获取 4.NSData 的比较 5.NSData 的存储 6.NSData 与 字符串 的相互转换 7.NSData 与 Base6 ...

  2. iOS - Swift NSUserDefaults 数据存储

    前言 public class NSUserDefaults : NSObject 用来保存应用程序设置和属性.用户保存的数据.用户再次打开程序或开机后这些数据仍然存在.如果往 userDefault ...

  3. php接口 接受ios或android端图片; php接收NSData数据

    备注下, [自己无意中用的方法]接收时,设置两个参数,一个是图片名称,另一个是实际文件.然后用$_FILES处理就可以了. 如: $icon = $_POST['icon'];//这个是图片的名称,用 ...

  4. iOS swift Alamofire+HandyJSON网络框架封装

    iOS swift Alamofire+HandyJSON网络框架封装 我们在学习Objective_C时使用的网络框架是AFNetworking+MJExtension,而在swift中Alamof ...

  5. IOS中JSON数据的解析

    IOS中JSON数据解析 官方为我们提供的解析JSON数据的类是NSJSONSerialization,首先我们先来看下这个类的几个方法: + (BOOL)isValidJSONObject:(id) ...

  6. iOS之网络数据下载和JSON解析

    iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上下载数据, 如何解析下载下来的JSON数据格式, 以及如何显示数据和图片的异步 ...

  7. IOS 读二进制数据文件

    IOS 读二进制数据文件 在开发项目的过程中,我们有可能遇到上面这图片展示的数据.其实这些数据是存放到文件中的二进制数据.记得大学的时候老师带着我们写了一个记账类软件,当时就是把账单里面的数据存放到文 ...

  8. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  9. IOS Swift 入门学习汇总 (更新中..)

    IOS Swift 学习入门 配置区 info 配置 本地化中文 文件导入Xcode CocoaPads 依赖管理工具 UI区 + 代码 通用 打开新页面方式 设置新开页面全屏展示 跳转页面 正向传值 ...

最新文章

  1. Visual Studio 2008 可扩展性开发(九):总结篇
  2. 基于SIMULINK的六足机器人仿真
  3. oracle生成42位,Oracle HowTo:如何确定Oracle是32 Bit(位)的还是64 Bit(位)的?
  4. 深度学习(二十一)基于FCN的图像语义分割
  5. 第十四节(接口(行为))
  6. 构建官方CoreOS COSA 镜像并构建 CoreOS
  7. 执行引擎(Execution Engine)总结
  8. 雪花算法生成主键id
  9. 美团外卖广告投放系统的设计
  10. 硬盘盒刷固件使其不休眠
  11. Java中的private关键字
  12. 集合论的创始人康托尔(G.Cantor)的故事
  13. html如何制作艺术字体,PS制作个性的艺术字特效
  14. 力扣887题-鸡蛋掉落
  15. Typora开始收费,替代品marktext
  16. 利用Prometheus(普罗米修斯)Grafana对机器群的运行时各项数据进行监控
  17. win10切换输入法快捷键_分享27个使用Win10的技巧,希望能助你提升Win10的使用效率。...
  18. myd文件 php项目,MYSQL表引擎与文件.frm,.myd,.myi
  19. TPM分析笔记(一) TPM历史
  20. 基于matlab模拟心电信号,附赠代码

热门文章

  1. 基于java的InputStream.read(byte[] b,int off,int len)算法学习!
  2. hanlp java_HanLP-实词分词器详解
  3. android 返回字符串,android – 如何从异步回调使用Retrofit返回String或JSONObject?
  4. java取geosever数据_Geoserver - 连接到SQL Server 2008 Express并获取数据
  5. linux vim编辑器主要作用,Linux-vim编辑器
  6. php最常见代码,PHP常见算法合集代码实例
  7. 智能车竞赛技术报告 | 智能车视觉 - 西南科技大学 - 西科二队
  8. 飞桨助力智能车竞赛升级,免费赠送EB开发板!
  9. 确定第十五届安徽赛区国赛奖项数量
  10. 实时获取vuex更新的新数据_三网运营商大数据实时截流,网站手机号获取