在 Swift 中从 NSString 创建 NSData
在 Swift 中,您可以使用 data(using:) 方法将字符串转换为数据。此方法属于字符串类,用于检索数据值。在本文中,您将看到这种方法的一些用例示例。
以下是在 Swift 中将 NSString 转换为 NSData 的步骤
创建一个包含要转换的字符串的 NSString 对象。
在 NSString 对象上调用 data(using:) 方法,将所需的编码作为参数传递。
使用可选绑定 (if let) 检查 data(using:) 方法的结果是否不为 nil。
根据需要使用生成的 NSData 对象,例如将其传递给网络 API 或将其写入磁盘。
如果转换失败,请使用可选绑定 (if let) 检查 data(using:) 方法的结果是否为 nil,并采取适当的操作(例如,记录错误消息或显示错误到用户)。
以下是示例
在此示例中,字符串常量包含要转换为数据的字符串。使用 String.Encoding.utf8 参数在字符串对象上调用 data(using:) 方法,以使用 UTF-8 编码将字符串转换为数据。
该方法返回一个可选的 NSData 对象,如果转换失败,则该对象将为 nil。您应该使用可选绑定(if let)来解开结果并检查错误。
获得 NSData 对象后,您可以根据需要使用它,例如将其传递给网络 API 或将其写入磁盘。
示例
import Foundation // 创建一个包含要转换的字符串的 String 对象。 let string = "Lorem Ipsum is simply dummy text of the printing and typesetting industry." // 在 String 对象上调用 data(using:) 方法。 if let data = string.data(using: .utf8) { print("输入字符串:\(string)") print("转换后的数据:\(data)") } else { print("将字符串转换为数据时出错") }
输出
输入字符串:Lorem Ipsum is simply dummy text of the printing and typesetting industry. 转换后的数据:74 字节
示例:将空字符串转换为数据
在此示例中,我们创建一个空字符串并使用 UTF-8 编码将其转换为数据。生成的 NSData 对象将作为空字符串打印到控制台,表示为 0 个字节。
import Foundation // 创建一个包含要转换的字符串的 String 对象。 let string = "" // 在 String 对象上调用 data(using:) 方法。 if let data = string.data(using: .utf8) { print("输入字符串:\(string)") print("转换后的数据:\(data)") } else { print("将字符串转换为数据时出错") }
输出
输入字符串: 转换后的数据:0 个字节
在 Swift 中从 NSString 创建 NSData 时,需要牢记以下几点
要将字符串转换为数据,请使用 NSString 的 data(using:) 函数。作为此函数的输入,您应指明翻译的首选编码。
如果翻译失败,data(using:) 函数将提供一个可选的 NSData 对象,否则将返回 nil。要安全地解包输出并检查错误,请使用可选绑定 (if let)。
生成的 NSData 对象是使用所选编码编码的文本的二进制表示。该对象可以作为数据的十六进制描述打印到终端。
您使用的编码取决于您处理的材料类型。尽管 UTF-8 是写入数据最常用的格式,但您也可以使用 ASCII、UTF-16 或 ISO。
文本中的非 ASCII 字符将根据编码在生成的 NSData 对象中呈现为一系列一个或多个字节。在 UTF-8 编码中,字母"é"由两个字节表示:"c3"和"a9"。
如果文本为空,则生成的 NSData 对象也为空。
如果您选择的编码无法表示文本中的所有字母,则转换将失败并产生零。在这种情况下,通过提醒用户或记录错误语句来适当地管理错误。
将 NSString 转换为 NSData 可用于各种场景,例如
网络− 通过网络传输数据时,您可能需要在传递数据之前将字符串转换为二进制数据(即 NSData)。例如,如果您将 JSON 有效负载作为 HTTP 请求的一部分传输,则需要使用正确的编码将 JSON 文本转换为 NSData。
文件 I/O − 读取或写入文件时,您可能需要在读取或写入文件信息之前将字符串转换为二进制数据。例如,在写入文本文件时,您必须先使用适当的编码将文本字符串转换为 NSData,然后才能将其录制到光盘上。
加密− 加密数据时,您可能需要先将纯文本转换为二进制数据,然后再使用加密方法对其进行编码。产生的受保护数据也将是二进制数据。(即 NSData)。
单元测试 − 在为代码创建单元测试时,您可能需要将函数的实际输出与预期值进行比较。如果预期值是字符串,您可能需要使用适当的编码将其转换为二进制数据,然后再将其与函数的实际输出进行比较。
结论
总之,在 Swift 中将 NSString 转换为 NSData 是一个简单的过程,只需在 NSString 对象上调用 data(using:) 方法并使用所需的编码作为参数即可。然后可以根据需要使用生成的 NSData 对象,例如将其传递给网络 API 或将其写入磁盘。