swift方法中的参数“符合协议的类的类型”

R-Riddie

问题

我想在特定的类中创建一个通用方法,在其中我可以调用另一个基于目标(符合特定协议)的类,该类可以进行某些计算。

如果我明确定义目标的种类,则可以正常工作,但是如果我要将其作为符合特定协议的类型来传递,则会遇到麻烦。

不清楚看不懂

我有一个协议和一个符合它的类,如下所示:

protocol MyProtocol {
    func someFunc()
}

class ConformingClass: MyProtocol {
    func someFunc() {
        // Do something
    }
}

我需要使用一个类:

class SomeClass<N: MyProtocol> {
    class func doSomething() {
        // Do something
    }
}

在我的类中,我想使用SomeClass,但是它的类型将定义为以下方法的参数:

class MyClass {
    func doStuff<C: MyProtocol>(target: C.Type) {
        SomeClass<target>.doSomething
    }
}

问题

编译错误:“目标”不是类型

在此处输入图片说明

问题

当我明确地说参数是符合MyProtocolType时怎么可能出错我在这里做错了什么?

我正在使用Swift 2.3Xcode 7.3.1

OOPer

在您的代码中target包含一个“运行时类型对象”。而且,您不能将此类内容用作泛型类型参数。您知道您不能这样做:

func doStuff<C: MyProtocol>(target: C.Type) {
    var c: target? //<- This is illegal. You cannot use `target` where a "type" is needed.
}

您为什么不这样写:

func doStuff<C: MyProtocol>(target: C.Type) {
    SomeClass<C>.doSomething()
}

您可以将其用作:

myObj.doStuff(ConformingClass.self)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

swift方法中的参数“符合协议的类的类型”

来自分类Dev

swift方法接受参数(如果符合协议)

来自分类Dev

使类型的属性也符合Swift中的协议

来自分类Dev

Swift泛型类类型既是子类又符合协议

来自分类Dev

iOS Swift类符合协议

来自分类Dev

类型“ myViewController”不符合Swift中的协议UIPIckerDataSource

来自分类Dev

无法在Swift中创建符合协议的类型的数组

来自分类Dev

如何在Swift中列出所有符合协议的类?

来自分类Dev

为什么 Swift 不允许在采用协议的参数中使用符合协议的类型?

来自分类Dev

Swift无法将符合协议的类作为函数参数传递给Objective-C文件中的函数

来自分类Dev

使Swift类符合协议-在静态/类级别

来自分类Dev

Swift类型在通用约束下不符合协议错误,但在类本身不符合协议错误

来自分类Dev

Swift类型在通用约束下不符合协议错误,但在类本身不符合协议错误

来自分类Dev

非最终类中的方法必须返回“ Self”以符合协议

来自分类Dev

将符合协议的类作为参数传递

来自分类Dev

如何传递符合协议的类类型

来自分类Dev

如何在 Swift 中使类符合协议并且可以覆盖协议方法?

来自分类Dev

具有符合协议的参数的Swift函数

来自分类Dev

Swift:类型不符合协议“ ArrayLiteralConvertible”

来自分类Dev

Swift:类型不符合协议

来自分类Dev

符合协议的结构类型的Swift数组

来自分类Dev

Swift类型不符合协议NilLiteralConvertible

来自分类Dev

Swift:XXX类型必须符合协议“ NSObjectProtocol”

来自分类Dev

类型不符合协议Swift

来自分类Dev

如何使Swift的String类型符合CVarArgType协议?

来自分类Dev

符合协议的结构类型的Swift数组

来自分类Dev

Swift中的协议扩展,其中对象是一个类并符合协议

来自分类Dev

符合Objective-C协议的Swift类

来自分类Dev

符合协议和类的Swift属性

Related 相关文章

  1. 1

    swift方法中的参数“符合协议的类的类型”

  2. 2

    swift方法接受参数(如果符合协议)

  3. 3

    使类型的属性也符合Swift中的协议

  4. 4

    Swift泛型类类型既是子类又符合协议

  5. 5

    iOS Swift类符合协议

  6. 6

    类型“ myViewController”不符合Swift中的协议UIPIckerDataSource

  7. 7

    无法在Swift中创建符合协议的类型的数组

  8. 8

    如何在Swift中列出所有符合协议的类?

  9. 9

    为什么 Swift 不允许在采用协议的参数中使用符合协议的类型?

  10. 10

    Swift无法将符合协议的类作为函数参数传递给Objective-C文件中的函数

  11. 11

    使Swift类符合协议-在静态/类级别

  12. 12

    Swift类型在通用约束下不符合协议错误,但在类本身不符合协议错误

  13. 13

    Swift类型在通用约束下不符合协议错误,但在类本身不符合协议错误

  14. 14

    非最终类中的方法必须返回“ Self”以符合协议

  15. 15

    将符合协议的类作为参数传递

  16. 16

    如何传递符合协议的类类型

  17. 17

    如何在 Swift 中使类符合协议并且可以覆盖协议方法?

  18. 18

    具有符合协议的参数的Swift函数

  19. 19

    Swift:类型不符合协议“ ArrayLiteralConvertible”

  20. 20

    Swift:类型不符合协议

  21. 21

    符合协议的结构类型的Swift数组

  22. 22

    Swift类型不符合协议NilLiteralConvertible

  23. 23

    Swift:XXX类型必须符合协议“ NSObjectProtocol”

  24. 24

    类型不符合协议Swift

  25. 25

    如何使Swift的String类型符合CVarArgType协议?

  26. 26

    符合协议的结构类型的Swift数组

  27. 27

    Swift中的协议扩展,其中对象是一个类并符合协议

  28. 28

    符合Objective-C协议的Swift类

  29. 29

    符合协议和类的Swift属性

热门标签

归档