我正在使用
dataUsingEncoding(encoding: NSStringEncoding, allowLossyConversion: Bool = default) -> NSData?
函数将 String 转换为 NSData,但我不明白 allowLossyConversion
的实际含义。
和有损压缩类似吗?有人能帮我理解这个吗?
如果标志为YES,并且接收方无法在不丢失某些信息的情况下进行转换,则某些字符可能会在转换中被删除或更改。例如,在将字符从 NSUnicodeStringEncoding 转换为 NSASCIIStringEncoding 时,字符“Á”变为“A”,失去重音符号。
即使文本使用无法正确转换的字符,此选项也可以让您获得
data
。
当处理任意文本并从中生成 QR 码时,这非常有用。
例如,公司名称
McDonald's
有撇号,无法使用data
正确转换为.ascii
。
如果在函数中你传递了
false
:
text.data(using: .ascii, allowLossyConversion: false)
您将从
"Apple"
-> "Apple"
以及 "McDonald's"
-> nil
收到。
同时,如果您通过了
true
:
text.data(using: .ascii, allowLossyConversion: true)
您将从
"Apple"
-> "Apple"
以及 "McDonald's"
-> "McDonald?s"
收到。