专门写文章的网站,wordpress 论坛 注册,做签名的网站,百度知道合伙人官网本文目录 前言1、NSData 的创建2、数据的长度3、数据的获取4、NSData 的比较5、NSData 的存储6、NSData 与 字符串 的相互转换7、NSData 与 Base64编码字符串 的相互转换回到顶部前言 public class NSData : NSObject, NSCopying, NSMutableCopying, NSSecureCoding public cla… 本文目录 前言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 Worldlet 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