快速调用通用函数

nacho4d

我有以下结构,变量和函数:

struct MyModel {
    var keyString: String
    var keyNum: Int
}

let data = "{\"keyString\": \"valueString\", \"keyNum\": 1 }"

func myFunction<T: AnyObject>(str: String) throws -> T? {
    return nil
}

如何使用MyModel调用该函数?下面的代码使编译器抱怨:“无法推断出通用参数'T'”

let myModel = try? myFunction(str: data) as? MyModel

链接到Swift REPL:http : //swiftlang.ng.bluemix.net/#/repl/57f1fa479ce3c95fc38e63b3

清扫器

由于您的通用类型参数是使用约束声明的,因此如下所示:

func myFunction<T: AnyObject>

因此,无论使用哪种类型,它都必须是引用类型或实现NSObjectProtocol或类似的东西。

swift结构是一种值类型,因此MyModel不可能用作泛型类型参数。

解决方案:

  • 更改通用类型约束以<T: Any>使其接受值类型。

  • 删除通用类型约束。

  • 将结构更改为一个类,然后添加一个初始化程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章