42-NSData & NSMutableData

一、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)

你可能感兴趣的:(42-NSData & NSMutableData)