日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS - Swift NSData 数据

發布時間:2023/12/2 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。