【发布时间】:2020-02-05 16:27:55
【问题描述】:
我正在尝试读取 mifare 标签的 UID。
看例子,经常看到下面的方法:
func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
if case let NFCTag.miFare(tag) = tags.first! {
print(tag.identifier as NSData)
}
}
但是,当把它放到我的项目中时,该方法没有被调用。
我还注意到 xCode 发出警告说这几乎与可选协议匹配,除了它使用 NFCNDEFTag 而不是 NFCTag..
当我尝试更新时,确实会调用该方法。但是后来我在尝试将标签定义为该方法中的 mifare 时遇到了麻烦。我收到错误“模式无法匹配“NFCNDEFtag”类型的值。
代码如下:
@available(iOS 13.0, *)
func readerSession(_ session: NFCNDEFReaderSession, didDetect tags: [NFCNDEFTag]) {
print("in did detect tags")
let tag = tags.first!
session.connect(to: tag) { (error: Error?) in
session.connect(to: tag) { (error: Error?) in
if case let .mifare(mifareTag) = tag {
// can access tag identifier here?
}
}
}
}
【问题讨论】: