iOS - Swift NSData 数据

回到顶部

前言

    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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美国东北大学khoury计算机学院,2021年美国东北大学计算机研究生专业有哪些?入学要求高吗?...

在“唯才是用”的时代,高新科技行业人才成为了社会的主流,各行各业也都急需计算机相关人才,美国可谓是计算机领域的鼻祖,拥有着非常先进的互联网技术,除此之外,几乎每所大学都开设了计算机专业,…

c++进制转换代码_轻松实现C/C++各种常见进制相互转换,你还不会你就落后了

这篇文章主要介绍了轻松实现C/C各种常见进制相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧其它进制转为十进制在实现这个需求之前,先简单介绍一…

我的博客是怎么自定义的

第一步&#xff0c;打开设置&#xff0c;一切都在设置里进行&#xff0c;让我们从头到尾&#xff0c;从左到右一步步讲。 1.头像 此头像不是账号头像&#xff0c;是标题那里放图片当头像 <img src"你头像的地址" alt"" /> 步骤&#xff1a;将你喜欢…

2017年计算机三级网络技术试题,2017年计算机三级网络技术考前试题及答案(8)

三、应用题(共20分)请根据下图所示网络结构回答问题。1&#xff0e;填写路由器RG的路由表项(每空2分&#xff0c;共l0分)。2&#xff0e;如果该网络内服务器群的IP地址为58&#xff0e;45&#xff0e;57&#xff0e;11-58&#xff0e;45&#xff0e;57&#xff0e;25&#xff0…

byte数组转为string_String类

API ----StringBufferjava.lang.Object 继承者 java.lang.Stringpublic final class String extends Object implements Serializable, Comparable<String>, CharSequenceYuSLi&#xff1a;String类速查速记​zhuanlan.zhihu.comYuSLi&#xff1a;补充&#xff1a;String…

AngularJS的学习笔记(二)

只给自己看的。 AngularJS 表达式 angularjs 使用表达式将数据绑定到html中。 AngularJS 表达式写在双大括号内&#xff1a;{{ expression }}。 AngularJS 表达式把数据绑定到 HTML&#xff0c;这与 ng-bind 指令有异曲同工之妙。 AngularJS 将在表达式书写的位置"输出&qu…

亚型多态性应用于元组的危险

Java 8具有lambda和stream&#xff0c;但是没有元组&#xff0c;这真是令人遗憾 。 这就是为什么我们在jOOλ中实现了元组-Java 8缺少的部分 。 元组确实是无聊的值类型容器。 本质上&#xff0c;它们只是这些类型的枚举&#xff1a; public class Tuple2<T1, T2> {publ…

广西计算机二级450034考点,广西计算机等级考试报名地点

2010年下半年全国计算机等级考试时间是2010年9月18日至22日&#xff0c;第一天上午考笔试&#xff0c;上机考试从笔试的当天下午开始(一级从上午开始)。2010年下半年全国计算机等级考试报名时间已经开始&#xff01;如果您是在校生&#xff0c;去学校相关报名处报名最方便&…

HBuilder完成webApp入门(3) 关于webview (转)

个人认为WebView是 html5 API的一个非常重要的部分。 WebView 的帮助文档http://www.html5plus.org/doc/zh_cn/webview.html 为什么对WebView的掌握很重要&#xff1f;因为它是一个HTML5 APP的基础。刚刚学习HBuilder的同学一般会将重点放在 mui 组件上。mui 提供了很多默认的方…

ca证书 csr_linux下使用openssl生成 csr crt CA证书

证书文件生成:一.服务器端1.生成服务器端 私钥(key文件);openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法,也可以选用其他安全的算法),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果不要口…

佛山市南海技师学校计算机类,佛山南海信息技术学校2021年有哪些专业

即将面临毕业的时候&#xff0c;同学们都要选择学校&#xff0c;都要选择专业就读&#xff0c;至于选择什么&#xff0c;就是一大难题了。学习是重要的事情&#xff0c;选择更是件大事。小编整理了学校的招生专业详情&#xff0c;仅供参考。佛山南海信息技术学校专业名单&#…

java nio拷贝文件_Java 7 – NIO文件革命

java nio拷贝文件Java 7&#xff08;“项目代币”&#xff09;已于去年7月问世。 此版本中的新增功能很有用&#xff0c;例如&#xff0c;尝试资源-从try块中自动处理可关闭的资源&#xff0c;switch语句中的字符串&#xff0c;用于异常的multicatch以及用于处理泛型的<>…

getresource 路径转义_java中的相对路径和绝对路径

(转载)1.基本概念的理解绝对路径&#xff1a;绝对路径就是你的主页上的文件或目录在硬盘上真正的路径&#xff0c;(URL和物理路径)例如&#xff1a;C:\xyz\test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相对路径&#xff1a;…

创建 floating IP - 每天5分钟玩转 OpenStack(106)

先复习一下前面我们讨论的知识。 当租户网络连接到 Neutron router&#xff0c;通常将 router 作为默认网关。当 router 接收到 instance 的数据包&#xff0c;并将其转发到外网时: 1. router 会修改包的源地址为自己的外网地址&#xff0c;这样确保数据包转发到外网&#xff…

把ipa文件上传到服务器,windows电脑上传ipa到appstore的详细流程

在使用H5混合开发的app打包后&#xff0c;需要将ipa文件上传到appstore进行发布&#xff0c;就需要去苹果开发者中心进行发布。但是在苹果开发者中心无法直接上传ipa文件&#xff0c;它要求我们使用xcode或transport等工具上传ipa文件&#xff0c;但是xcode和transport不能安装…

Java的5个古怪问题

我们有机会尝试了一些最奇怪的Java难题 即使是最有经验的Java开发人员&#xff0c;也会在这篇文章中发现令人困惑的问题。 或至少是有趣的&#xff08;绝对不公平&#xff09;。 在经历了Java Deathmatch冒险之后&#xff0c;我们决定这次发布一系列不同的问题&#xff0c;着重…

js 取得数组下标_数组的介绍及使用

JavaScript 中的数组常用于在单个变量中存储多个值。数组就是一组数据的集合&#xff0c;在内存中表现为一段连续的内存地址(保存在堆内存)。创建数组的目的就是为了保存更多的数据。数组概念和语法概念&#xff1a;数组是一个特殊变量&#xff0c;一次可以容纳多个值。特点&am…

css的一种预处理器 sass

之前觉得关于css什么的没什么&#xff0c;后来让别人给问住了。。。然后就悲催了。。。 sass是一种css的预处理器&#xff0c;是一种函数式的css的编程&#xff1b; 主要还是看官网 http://www.w3cplus.com/sassguide/ 这个是基于Ruby 1.需要安装&#xff1a; 可以直接自己…

服务器系统巡检记录表,服务器月度巡检记录

《服务器月度巡检记录》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《服务器月度巡检记录(2页珍藏版)》请在人人文库网上搜索。1、服务器月度巡检记录 巡检日期&#xff1a; 年 月 日一、物理环境检查检查内容检查结果备注环境温度温度&#xff1a; &#xff1b; 环…

bigdecimal取小数部分_小数精度丢失问题分析和解决

无论在什么业务中&#xff0c;钱?是非常重要的东西&#xff0c;对账的时候一定要对的上&#xff0c;不能这边少一分钱那边多一分钱。对于数值的计算&#xff0c;尤其是小数&#xff0c;floate和double都是禁止使用的。阿里强制要求存放小数时使用 decimal&#xff0c;禁止使用…