swift 快速地将一个对象类型传递给一个函数并使用它来创建新对象

siotufzp  于 2023-03-17  发布在  Swift
关注(0)|答案(1)|浏览(125)

我有一些代码,我试图创建一个通用的jsonDecode函数来将json解码为可编码对象,问题是我不知道如何编写它,以便调用该函数并传入我想要解码的可编码对象的类型。
以下是我目前拥有的,但它显然不工作:

static func decodeJSON(_ filename: String, as objectType: Any) {
        // Earlier part of function gets jsonData variable
        do {
            return try JSONDecoder().decode(objectType.self, from: jsonData)
        } catch {
            print(error)
        }
    }

我需要把objectType参数的类型设置为什么?,然后我应该如何在objectType.self的地方调用它?,我需要使用泛型吗?

olmpazwi

olmpazwi1#

正如@HangarRash回复的那样,在TopLevelDecoderdecode方法上对函数进行建模解决了这个问题。我将函数声明行改为func decodeJSON<T: Codable>(_ filename: String, as objectType: T.Type ),这样就可以解码成任何对象类型。假设你想解码成一个名为RandomClass的类,你可以使用decodeJSON("filename", as: RandomClass.self)

相关问题