本文目录

  • 前言
  • 1、NSData 的创建
  • 2、数据的长度
  • 3、数据的获取
  • 4、NSData 的比较
  • 5、NSData 的存储
  • 6、NSData 与 字符串 的相互转换
  • 7、NSData 与 Base64编码字符串 的相互转换
回到顶部

前言

    public class NSData : NSObject, NSCopying, NSMutableCopying, NSSecureCoding public 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.length let num2:Int = data2.length let num3:Int = data3.length // 重新设置空间的大小,对象的字节空间会相应的扩充或者截断。如果新设置的大小大于当前大小, // 会在当前数据的末尾处用归零字节来进行填充。如果新设置的大小小于当前大小,数据会被截断抛弃。 data2.length = 5 data3.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)! // 将数据写入 file let 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编码的字符串 转换为 NSData let nsData:NSData? = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))

如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/Free-Thinker/p/6010846.html

iOS - Swift NSData 数据相关推荐

  1. iOS - Swift NSData 数据

    前言 public class NSData : NSObject, NSCopying, NSMutableCopying, NSSecureCodingpublic class NSMutable ...

  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. 10 个省时间的 PyCharm 技巧,提升工作效率,杠杠滴!
  2. 指针05 - 零基础入门学习C语言45
  3. android开发出现No Launcher activity found!解决方案
  4. springmvc十九:springmvc表单标签
  5. 一个比较完整的Inno Setup 安装脚本
  6. Spring的Bean实例化、属性注入、对象注入、复杂注入(基于xml配置方式)
  7. 浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)
  8. 创维oled工厂模式abd_创维OLED游戏电视创维专业电竞显示器 为SN战队保驾护航
  9. can4--测试can
  10. 前端学习(1864)vue之电商管理系统电商系统之绘制登录表单区域带icon的输入框
  11. 5.过滤器作为模板——1D 相关、Matlab互相关实战_1
  12. Spring Boot 操作 Memcache
  13. ordfilt2非线性滤波器
  14. css 悬停动画_CSS3缩放图像动画效果悬停
  15. linker command failed with exit code 1
  16. 日志分析工具 GoAccess v1.3 发布,支持简体中文和安装使用
  17. 华为GPON设备ONU常见告警及处理
  18. android 图片合成pdf文件,如何在Android上将多个图像合并到PDF文件中 | MOS86
  19. CSP -- 运营商内容劫持(广告)的终结者
  20. JTT 809-2019客户端与服务端协议开发

热门文章

  1. 欢乐鼠标自动点击器_使用ESP32 DIY蓝牙自动点击器,滑屏器
  2. 输入一个正整数求所有素数因子_一起来聊聊素数的两个性质
  3. C语言中的指针有什么作用
  4. 谈谈C语言中的杂项运算符
  5. 松下壁挂式新风系统推荐_松下壁挂式新风怎么样 松下壁挂式新风系统优势介绍【详解】...
  6. POE供电交换机应用方案及功能特性介绍
  7. [渝粤教育] 西南科技大学 工程测量 在线考试复习资料
  8. 【渝粤题库】陕西师范大学180208 产品管理 作业(专升本)
  9. 【渝粤题库】国家开放大学2021春3979会计学概论题目
  10. 计算机上播放时没声音什么故障,事实:在笔记本电脑上播放歌曲时如果没有声音怎么办...