我正在实现苹果钱包,我需要将卡添加到钱包中。我正在尝试转换我在addPaymentPassViewController(_:generateRequestWithCertificateChain:nonce:nonceSignature:completionHandler:(中收到的证书,nonceSignature和nonceSignature,从"Data"转换为以"UTF8"格式编码的字符串。
但是,在使用 utf8 编码格式从数据转换为字符串时,转换返回 nil。
请找到附加的图像。我已经突出显示了转换失败的地方
有人可以帮我确定出了什么问题吗?
class ViewController: PKAddPaymentPassViewControllerDelegate {
func addPaymentPassViewController(_ controller: PKAddPaymentPassViewController, generateRequestWithCertificateChain certificates: [Data], nonce: Data, nonceSignature: Data, completionHandler handler: @escaping (PKAddPaymentPassRequest) -> Void) {
var encodedCertificateString = ""
for index in 0..<certificates.count {
if let encodedCertString = String(data: certificates[index], encoding: .utf8) {
encodedCertificateString.append(encodedCertString)
if index != (certificates.count-1) {
encodedCertificateString.append(", ")
}
}
}
}
func addPaymentPassViewController(_ controller: PKAddPaymentPassViewController, didFinishAdding pass: PKPaymentPass?, error: Error?) {
controller.dismiss()
}
}
它不是 utf8 编码的字符串(DER 编码的 X.509 证书(,因此您的调用失败。您必须下载根 CA 才能验证链。