如何将 firebase 函数提取到 Swift 中的对象?
Posted
技术标签:
【中文标题】如何将 firebase 函数提取到 Swift 中的对象?【英文标题】:How do I extract firebase functions to an object in Swift? 【发布时间】:2020-05-18 23:51:08 【问题描述】:我是面向对象编程的新手,我正在尝试将逻辑从我的视图控制器中移到它自己的模型中,以便我可以重用端点调用等,但我不知道如何提醒我的视图控制器结果发生在对象内部。在 javascript 中,我通常只是将函数设置为返回一个值,但它不允许我返回 Void Cannot convert return expression of type 'Void' to return type 'String'
以外的任何内容。
import Foundation
import Firebase
class CloudFunctions
let functions = Functions.functions()
func addNewAccount(param1: String) -> String
functions.httpsCallable(FunctionsConstants.myFunction).call(["param1Name":param1]) (result, error) in
if let e = error
return "\(e)"
else
if let result = result
return "\(result.data)"
else
return "Sorry, we couldn't unwrap the result."
在我的视图控制器中,我将其称为
let cloudFunctions = CloudFunctions()
self.result = cloudFunctions.addNewAccount(param1: dataHere)
我以为我可以在结果上创建一个 didSet 来更新 UI,但它不会让函数通过,因为我收到错误:Cannot convert return expression of type 'Void' to return type 'String'
【问题讨论】:
【参考方案1】:你需要一个完成
func addNewAccount(param1: String,completion:@escaping(String -> ()))
functions.httpsCallable(FunctionsConstants.myFunction).call(["param1Name":param1]) (result, error) in
if let e = error
return "\(e)"
else
if let result = result
completion("\(result.data)")
else
completion("Sorry, we couldn't unwrap the result.")
addNewAccount(param1:"") str in
【讨论】:
这成功了!我以前从未见过的全新语法。这是处理这类函数的常用方法吗?以上是关于如何将 firebase 函数提取到 Swift 中的对象?的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 Firebase 提取到 RecyclerView 时出错。致命异常:...没有定义无参数构造函数