当前位置:  开发笔记 > IOS > 正文

扩展无法在运行时访问泛型参数

如何解决《扩展无法在运行时访问泛型参数》经验,为你挑选了2个好方法。

我正在使用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,因此您可能必须考虑其他方法,直到此错误得到解决.



1> Vadim Bulavi..:

对于那些在Swift 4中遇到此问题的人,请尝试@objc在方法中添加修饰符.请找到以下示例:

extension NSLayoutAnchor {

    @objc func constrainEqual(_ anchor: NSLayoutAnchor, constant: CGFloat = 0) {
        let constraint = self.constraint(equalTo: anchor, constant: constant)
        constraint.isActive = true
    }
}



2> dfri..:

如果没有上下文,我不能说你是否真的在做错误信息提示你的内容,但是有一个开放的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,因此您可能必须考虑其他方法,直到此错误得到解决.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有