首页 > 解决方案 > 如何将自定义 Codable 模型传递给 Firebase 函数?

问题描述

将自定义 Codable 模型传递给 firebase 函数的最佳方法是什么?这是我现在所拥有的,但我得到了错误:Unsupported type: __SwiftValue for value

struct ExampleStruct: Codable {
    var hi: String
    var world: Int
    var last: [String]
}

let myModel = ExampleStruct(hi: "World", world: 1, last: ["hi world"])

functions.httpsCallable(FirebaseFunctionsNames.exampleName).call(["data":myModel]) { [weak self] (result, error) in
    print(result)
    print(error)
}

标签: swiftfirebasegoogle-cloud-functions

解决方案


以下内容最终解决了我的问题(注意:我不建议强制展开和强制转换,但以这种方式在 StackOverflow 中更容易使用 :)

struct ExampleStruct: Codable {
    var hi: String
    var world: Int
    var last: [String]
}

let myModel = ExampleStruct(hi: "World", world: 1, last: ["hi world"])

func hiWorld(input: myModel) {
    let jsonEncoder = JSONEncoder()
    let jsonData = try! jsonEncoder.encode(input)
    let json = String(data: jsonData, encoding: .utf8)!
    functions.httpsCallable(FirebaseFunctionsNames.exampleName).call(["data":json]) { [weak self] (result, error) in
        print(result)
        print(error)
    }
}

然后在后端(打字稿):

const myModel = JSON.parse(data.data) as ExampleStruct;

推荐阅读