将类型变量作为参数传递给Swift

时间:2017-08-01 12:32:21

标签: swift

我有一个带签名的方法:

func relatedObject<T: SomeType>(for type: T.Type) -> SomeRelatedObject

我有一个SomeType.Type变量,我想以某种方式调用该方法,例如:

let typeVariable: SomeType.Type = ...
let result = relatedObject(for: typeVariable)

但是我收到了错误:

Cannot invoke 'relatedObject' with an argument list of type '(for: SomeType.Type)'

是否有可能以某种方式实际调用方法?

1 个答案:

答案 0 :(得分:0)

您需要像这样调用它

relatedObject(for: CustomClass.self)

在这里,您可以传递符合SomeType的任何类/结构,而不是SomeType。假设您的CustomClass符合SomeType,那么您可以像

一样传递它
@PreAuthorize("@securityManager.check(#uuid)")
@GetMapping(path = URL_SUBMISSION_ID)
@ControllerLogging
public Object showSomething(@PathVariable(value = "submissionId") UUID submissionId) {
    return getData();
}