42-NSData & NSMutableData
2017-07-05 本文已影响50人
NetWork小贱
一、NSData的介绍
NSData 数据缓冲类,用于缓冲数据以便使用 。
二 、NSData 的初始化
下面介绍两种常见的初始化,还有很多不常用的初始化。
1、字符串初始化
// NSData 的初始化
let NwStr = "NetWork小贱"
// 通过字符串创建 NSData 对象
let NwData = NwStr.data(using: String.Encoding.utf8)! as NSData
2、文件路径初始化
// 数据的写入
var filePath = NSHomeDirectory()
// 文件路径的拼接
filePath = filePath + "nw.txt"
let NwData4 = NSData.init(contentsOfFile: filePath)
三、获取数据的长度
// 获取数据对象的长度 (汉字占 3 个字节的长度)
let NwDataLength = NwData.length
print(NwDataLength)
四、获取数据在内存中原始字节的地址
// 获取原始字节在内存中的地址
let Nwbytes = NwData.bytes
print(Nwbytes)
五、判断两个数据是否相等
// 判断两个数据是否相等
let NwStr = "NetWork小贱"
// 通过字符串创建 NSData 对象
let NwData = NwStr.data(using: String.Encoding.utf8)! as NSData
let NwStr2 = "NetWork小贱T"
// 通过字符串创建 NSData 对象
let NwData2 = NwStr2.data(using: String.Encoding.utf8)! as NSData
let isEquleS = NwData.isEqual(NwData2)
print(isEquleS)
六、获取数据中的部分数据
//获取数据中的部分数据
let NwData3 = NwData.subdata(with: NSRange.init(location: 0, length: 3))
print(String.init(data: NwData3, encoding: String.Encoding.utf8)!)
七、数据的文件写入和读取
1、写入数据
// 数据的写入
var filePath = NSHomeDirectory()
// 文件路径的拼接
filePath = filePath + "nw.txt"
// 数据开始写入
let isSuccess = NwData.write(toFile: filePath, atomically: true)
print(isSuccess)
// 通过网址写入
let isSuccess2 = NwData.write(to: URL.init(fileURLWithPath: filePath), atomically: true)
print(isSuccess2)
// 数据的拷贝
let isSuccess3 = NwData.copy(with: nil)
print(isSuccess3)
2、读取数据
// 路径获取数据
let NwData4 = NSData.init(contentsOfFile: filePath)
let String4 = String.init(data: NwData4! as Data, encoding: String.Encoding.utf8)
print(String4!)
八、数据的转化
1、 NSData ---> String
// 数据转化 NSData --->String
let str = NwData.base64EncodedString(options: [NSData.Base64EncodingOptions(rawValue: 0)])
print(str)
2、String ---> NSData
// 解码 String ---> NSData
let strUnEcode = NSData.init(base64Encoded: str, options: NSData.Base64DecodingOptions(rawValue: 0))
print(strUnEcode!)
3、 Base64 编码
// 数据Base64 编码
let NwData5 = NwData.base64EncodedData(options: .lineLength64Characters)
print(NwData5)
九、NSData 与 Data 的相互转化
// Data 和 NSData 的相互转化
let NwData6:NSData = NwData5 as NSData
print(NwData6)
let NwData7:Data = NwData as Data
print(NwData7)
十 、 NSMutableData 的使用
// 可变数据的创建
var dataMutable = NSMutableData(capacity: 0)
// 定义其长度
dataMutable = NSMutableData(length: 10)
// 扩展指定的长度
dataMutable?.increaseLength(by: 20)
// 添加数据
dataMutable?.append(NwData4! as Data)
// 设置数据
dataMutable?.setData(NwData7)
// 重置某范围的数据
dataMutable?.resetBytes(in: NSRange.init(location: 0, length: 2))
// 替换数据中的数据
dataMutable?.replaceBytes(in: NSRange.init(location: 0, length: 2), withBytes: NwData.bytes)