Swift 当使用扩展实现NFC委托方法时,如何在主类中声明NFCReadersession变量?

Swift 当使用扩展实现NFC委托方法时,如何在主类中声明NFCReadersession变量?,swift,Swift,嗯,我需要将NFC功能添加到一个项目中,为此我使用了CoreNFC。有一个条件,我需要使用扩展添加NFC函数,如下所示: extension scanVC: NFCNDEFReaderSessionDelegate { func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) { } func readerSession(_ session: NFCND

嗯,我需要将NFC功能添加到一个项目中,为此我使用了CoreNFC。有一个条件,我需要使用扩展添加NFC函数,如下所示:

extension scanVC: NFCNDEFReaderSessionDelegate {
    func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
    }
    func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
    }
}
视图控制器scanVC的其余代码也使用如下扩展实现:

extension scanVC {
    override func viewDidLoad() {
        super.viewDidLoad()
      //viewDidLoad code here
    }

 override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
     //viewWillAppear Code here
}
override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        // viewWillDisappear code here
    }

   override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
//viewDidDisappear code here
}
override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
 // code here
    }

}

extension scanVC: SubmitForm {
    // some other functionalities 
}

// *** main class with some variable and outlets declaration ***
class scanVC: UIViewController {

    @IBOutlet var headerScanLabel: UILabel!
    @IBOutlet var scanView: UIView!
    @IBOutlet var scanLabel: UILabel!
    @IBOutlet var submitBtn: UIButton!
}
现在的问题是我需要在这个主scanVC中声明一个或多个会话变量,但是当我声明时,它会给我一个与@available相关的错误,如下所示: “'NFCReaderSession'仅在iOS 11.0或更高版本上可用” 如果我将“@available(iOS 11.0,*)”添加到其封闭类中,则带有viewdidload、ViewWillExisten等的扩展会出现以下错误:

“重写“viewDidLoad”必须与其重写的声明一样可用”

我花了几乎一天的时间来修复,但什么都没用。。。有什么建议吗??
代码10.2,swift 4。谢谢

解决方法很简单。。。我只是在课堂外声明了那些必需的变量。。就在进口声明的下方。在所有扩展块中都可以访问它们

//***********NFC REQUIRED VARIABLES *************
@available(iOS 11.0, *)
var nfcsession:NFCNDEFReaderSession?
@available(iOS 11.0, *)
var detectedMessages = [NFCNDEFMessage]()
@available(iOS 11.0, *)
var payloads = [NFCNDEFPayload]()
//************************************************

嗨,试试这个-我试过使用公共说明符,但不起作用。我应该声明会话变量singleton吗??