iOS - Swift NSData 数据
生活随笔
收集整理的這篇文章主要介紹了
iOS - Swift NSData 数据
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文目錄
- 前言
- 1、NSData 的創(chuàng)建
- 2、數(shù)據(jù)的長(zhǎng)度
- 3、數(shù)據(jù)的獲取
- 4、NSData 的比較
- 5、NSData 的存儲(chǔ)
- 6、NSData 與 字符串 的相互轉(zhuǎn)換
- 7、NSData 與 Base64編碼字符串 的相互轉(zhuǎn)換
前言
public class NSData : NSObject, NSCopying, NSMutableCopying, NSSecureCoding public class NSMutableData : NSData-
NSData 和它的可變長(zhǎng)子類 NSMutableData 是字節(jié)緩沖區(qū)的對(duì)象化封裝。我們可以獲得簡(jiǎn)單緩沖區(qū),并進(jìn)行一些轉(zhuǎn)換操作。通常我們并不會(huì)直接創(chuàng)建字節(jié)數(shù)據(jù),而是從其他類型的內(nèi)容轉(zhuǎn)換成字節(jié)數(shù)據(jù)。
-
所謂簡(jiǎn)單緩沖區(qū),就是緩沖區(qū)內(nèi)只包含數(shù)據(jù),無(wú)內(nèi)嵌指針。
1、NSData 的創(chuàng)建
// 由字符串創(chuàng)建let swiftString:String = "Hello World"let nsString:NSString = "hello world" // allowLossyConversion 表示在轉(zhuǎn)換過(guò)程中是否允許字符進(jìn)行必要的刪減或者替換 let data1:NSData? = swiftString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) let data2:NSData? = nsString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) // 由已知數(shù)據(jù)創(chuàng)建,兩個(gè)對(duì)象的地址不相同 let data3:NSData = NSData(data: data1!) // 由文件創(chuàng)建 let data4:NSData? = NSData(contentsOfFile: NSHomeDirectory().stringByAppendingString("/Desktop/test.txt")) // 由 URL 創(chuàng)建 let data5:NSData? = NSData(contentsOfURL: NSURL(string: "http://www.baidu.com")!) // 可變 Data 的創(chuàng)建 // 初始化時(shí)指定對(duì)象擁有的字節(jié)空間大小,在需要時(shí)會(huì)增加內(nèi)存空間,在初始化時(shí)并沒(méi)有分配內(nèi)存空間 let data6:NSMutableData? = NSMutableData(capacity: 0) // 初始化時(shí)為對(duì)象分配指定長(zhǎng)度的歸零字節(jié) let data7:NSMutableData? = NSMutableData(length: 10) 回到頂部2、數(shù)據(jù)的長(zhǎng)度
let data1:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)! // 指定空間大小,不分配空間 let data2:NSMutableData = NSMutableData(capacity: 10)! // 分配指定長(zhǎng)度的歸零字節(jié) let data3:NSMutableData = NSMutableData(length: 10)! // 字節(jié)長(zhǎng)度的計(jì)算,NSData 的 length 屬性是只讀的,字節(jié)長(zhǎng)度的計(jì)算,NSMutableData 的 length 可以被重新賦值 let num1:Int = data1.length let num2:Int = data2.length let num3:Int = data3.length // 重新設(shè)置空間的大小,對(duì)象的字節(jié)空間會(huì)相應(yīng)的擴(kuò)充或者截?cái)唷H绻略O(shè)置的大小大于當(dāng)前大小, // 會(huì)在當(dāng)前數(shù)據(jù)的末尾處用歸零字節(jié)來(lái)進(jìn)行填充。如果新設(shè)置的大小小于當(dāng)前大小,數(shù)據(jù)會(huì)被截?cái)鄴仐墶?data2.length = 5 data3.length = 5 // 擴(kuò)充指定長(zhǎng)度,新添加的空間被設(shè)置為歸零字節(jié) data2.increaseLengthBy(7) data3.increaseLengthBy(7) 回到頂部3、數(shù)據(jù)的獲取
let data:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)! // 默認(rèn)為內(nèi)容數(shù)據(jù)的十六進(jìn)制編碼 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) // 比較兩個(gè)對(duì)象的地址是否一致 let bl1:Bool = data1 === data2 // 比較兩個(gè)對(duì)象的長(zhǎng)度及每字節(jié)的數(shù)據(jù)是否相同 let bl2:Bool = data1.isEqualToData(data2) 回到頂部5、NSData 的存儲(chǔ)
let data:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)! // 將數(shù)據(jù)寫入 file let bl1:Bool = data.writeToFile(NSHomeDirectory().stringByAppendingString("/Desktop/test.txt"), atomically: true) // 將數(shù)據(jù)寫入 URL,該方法只支持 file:// 路徑的文件寫入,并不能對(duì)遠(yuǎn)程如 http:// 等類型文件進(jìn)行寫入 let bl2:Bool = data.writeToURL(NSURL(string: "file://".stringByAppendingFormat("%@%@", NSHomeDirectory(), "/Desktop/test.txt"))!, atomically: true) 回到頂部6、NSData 與 字符串 的相互轉(zhuǎn)換
let string:String = "Hello World"// 字符串 轉(zhuǎn) NSDatalet data:NSData = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)! // NSData 轉(zhuǎn) 字符串 let utf8String:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)! 回到頂部7、NSData 與 Base64編碼字符串 的相互轉(zhuǎn)換
let data:NSData = "Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)! // NSData 轉(zhuǎn)換為 Base64編碼的字符串 let base64String:String = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) // Base64編碼的字符串 轉(zhuǎn)換為 NSData let nsData:NSData? = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))?
如果您覺(jué)得閱讀本文對(duì)您有幫助,請(qǐng)點(diǎn)一下“推薦”按鈕,您的“推薦”將是我最大的寫作動(dòng)力!歡迎各位轉(zhuǎn)載,但是未經(jīng)作者本人同意,轉(zhuǎn)載文章之后必須在文章頁(yè)面明顯位置給出作者和原文連接,否則保留追究法律責(zé)任的權(quán)利。
轉(zhuǎn)載于:https://www.cnblogs.com/Free-Thinker/p/6010846.html
總結(jié)
以上是生活随笔為你收集整理的iOS - Swift NSData 数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 将项目导入eclipse中出现的jsp页
- 下一篇: 我的博客是怎么自定义的