【发布时间】:2020-12-10 11:05:03
【问题描述】:
我在我的应用程序中实现了 Stripe,所以当我在 swift 中将我的 customer_id 作为参数发送时,它必须是可选的,否则它不起作用。但是我从 firebase 中提取 id 作为非可选值。有什么方法可以将非可选 id 转换为可选变量。从 Firestore 获取 id 的代码:
docRef.getDocument(source: .cache) { (document, error) in
if let document = document {
id = document.get("id") as? String ?? ""
}
id 作为非可选返回。我需要发送一个可选变量作为 id(这是它的唯一工作方式):
var data = ["api_version" : apiVersion, "customer_id" : id]
functions.httpsCallable("getStripeEphemeralKeys").call(data)
上面的代码给了我错误,但如果我发送与可选变量相同的确切 ID,它就可以工作
【问题讨论】:
-
任何非可选的都可以分配给它们的可选对应类型,而不会产生任何编译器投诉。它到底在哪里不适合你?
-
customer_id似乎是您的 firebase 函数参数,它是一个可选参数。也可能您可以定义您的文档,以便将 customer_id 存储为customer_id而不是实际的document id,以便它可以是可选的 -
你可以做
Optional.some(id)但我怀疑这是你的问题 -
您应该首先解释为什么将
id设为非可选。因为看起来只需将其声明为var id: String?即可解决您的问题。然后将id = document.get("id") as? String分配给它,没有?? ""部分。
标签: swift google-cloud-firestore google-cloud-functions stripe-payments optional