Ios Base64EncodedStringFromData Objective-C的新Swift方法
我正在将Objective-C转换为Swift并运行到代码中,该代码将Apple App Store收据数据转换为base64编码字符串 代码正在使用函数Base64EncodedStringFromDatafrom 从一篇标题为stackoverflow的文章中,我看到了如何对NSData进行编码Ios Base64EncodedStringFromData Objective-C的新Swift方法,ios,objective-c,swift,base64,Ios,Objective C,Swift,Base64,我正在将Objective-C转换为Swift并运行到代码中,该代码将Apple App Store收据数据转换为base64编码字符串 代码正在使用函数Base64EncodedStringFromDatafrom 从一篇标题为stackoverflow的文章中,我看到了如何对NSData进行编码 let base64String = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64
let base64String = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
但是,如果希望结果与Base64EncodedStringFromData函数相同,我认为应该执行以下操作:
let base64String = transactionReceipt.base64EncodedStringWithOptions([])
“Base64EncodedStringFromData”和transactionReceipt.base64EncodedStringWithOptions([])是否等效?我打算做实验。但是,我想确保这个概念是正确的。这两个概念是等价的吗?-答案是否定的,但这取决于字符串的长度 如果您查看,它清楚地指出,如果您没有指定行长度,那么编码将是回车+换行 此外,我还编写了一个小测试来查看,因为我也使用base64编码
let someShortString = "someShortString"
let encodedShortString = someShortString.dataUsingEncoding(NSUTF8StringEncoding)!
let someLongString = "someLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongString"
let encodedLongString = someLongString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64ShortStringWithoutParameters = encodedShortString.base64EncodedStringWithOptions([])
let base64ShortStringWithParameters = encodedShortString.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
let base64LongStringWithoutParameters = encodedLongString.base64EncodedStringWithOptions([])
let base64LongStringWithParameters = encodedLongString.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
base64ShortStringWithoutParameters == base64ShortStringWithParameters ? print("same") : print("not same")
base64LongStringWithoutParameters == base64LongStringWithParameters ? print("same") : print("not same")
它将为第一条语句打印“相同”,为第二条语句打印“不相同”
总之,如果字符串长度超过某个特定长度(可能是64个字符,但我不确定),那么它们就不一样了。转换后的字符串中将插入“\r\n”。我无法回答您的问题,但我想指出,在Swift中,您可以在枚举值之前删除枚举类型名称。您可以只编写
。Encoding 64 CharacterLineLength
和NSDatabase64 Encoding Options。Encoding 64 CharacterLineLength
将被推断。实验表明,我们的服务器和Apple采用transactionReceipt的替换Swift代码。base64EncodedStringWithOptions([])很好。感谢@AMomchilov指出.encoding64字符的线宽将被推断出来。我决定把它放在那里,因为这是另一篇支持文章的引文。谢谢你的快速回复。我将问题从“这两个是否等效”扩展到“Base64EncodedStringFromData”和TransactionReceive.base64EncodedStringWithOptions([])是否等效?我道歉。“这两个相等”的问题太模糊了。