我正在使用AWS Cognito,在文档中我说我必须添加此功能.
但是我收到了这个错误:
泛型Objective-C类的扩展无法在运行时访问类的泛型参数
extension AWSTask { public func continueWithExceptionCheckingBlock(completionBlock:@escaping (_ result: Any?, _ error: Error?) -> Void) { self.continue({(task: AWSTask) -> Any? in if let exception = task.exception { print("Fatal exception: \(exception)") kill(getpid(), SIGKILL); } let result: AnyObject? = task.result let error: NSError? = task.error as NSError? completionBlock(result, error) return nil }) } }
Vadim Bulavi.. 20
对于那些在Swift 4中遇到此问题的人,请尝试@objc
在方法中添加修饰符.请找到以下示例:
extension NSLayoutAnchor { @objc func constrainEqual(_ anchor: NSLayoutAnchor, constant: CGFloat = 0) { let constraint = self.constraint(equalTo: anchor, constant: constant) constraint.isActive = true } }
dfri.. 6
如果没有上下文,我不能说你是否真的在做错误信息提示你的内容,但是有一个开放的bug报告描述了这个问题(实际上没有使用任何违规代码):
SR-2708:在Swift 3中扩展ObjC泛型无法编译
ObjC:
@interface MySet> : NSObject @end 斯威夫特:
class Foo { } struct Bar { } extension MySet { func foo() -> Foo { return Foo() } func bar() -> Bar { return Bar() } }这两种扩展方法都导致"扩展泛型Objective-C类无法在运行时访问类的泛型参数".然而,它们都没有真正做到这一点(至少没有明确表达).
如果您阅读错误报告的评论,您会注意到用户'Vasili Silin'在尝试扩展时描述了此问题AWSTask
,因此您可能必须考虑其他方法,直到此错误得到解决.
对于那些在Swift 4中遇到此问题的人,请尝试@objc
在方法中添加修饰符.请找到以下示例:
extension NSLayoutAnchor { @objc func constrainEqual(_ anchor: NSLayoutAnchor, constant: CGFloat = 0) { let constraint = self.constraint(equalTo: anchor, constant: constant) constraint.isActive = true } }
如果没有上下文,我不能说你是否真的在做错误信息提示你的内容,但是有一个开放的bug报告描述了这个问题(实际上没有使用任何违规代码):
SR-2708:在Swift 3中扩展ObjC泛型无法编译
ObjC:
@interface MySet> : NSObject @end 斯威夫特:
class Foo { } struct Bar { } extension MySet { func foo() -> Foo { return Foo() } func bar() -> Bar { return Bar() } }这两种扩展方法都导致"扩展泛型Objective-C类无法在运行时访问类的泛型参数".然而,它们都没有真正做到这一点(至少没有明确表达).
如果您阅读错误报告的评论,您会注意到用户'Vasili Silin'在尝试扩展时描述了此问题AWSTask
,因此您可能必须考虑其他方法,直到此错误得到解决.