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