Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Base64EncodedStringFromData Objective-C的新Swift方法_Ios_Objective C_Swift_Base64 - Fatal编程技术网

Ios Base64EncodedStringFromData Objective-C的新Swift方法

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

我正在将Objective-C转换为Swift并运行到代码中,该代码将Apple App Store收据数据转换为base64编码字符串

代码正在使用函数Base64EncodedStringFromDatafrom

从一篇标题为stackoverflow的文章中,我看到了如何对NSData进行编码

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([])是否等效?我道歉。“这两个相等”的问题太模糊了。