iOS - Swift NSData 数据
生活随笔
收集整理的這篇文章主要介紹了
iOS - Swift NSData 数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文目錄
- 前言
- 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 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
總結
以上是生活随笔為你收集整理的iOS - Swift NSData 数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将项目导入eclipse中出现的jsp页
- 下一篇: 我的博客是怎么自定义的