首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ios Swift停止对NFC标签的覆盖

如何使用ios Swift停止对NFC标签的覆盖
EN

Stack Overflow用户
提问于 2020-07-03 19:35:36
回答 1查看 281关注 0票数 1

我已经申请了在swift 5中写入NFC,写入工作正常,但我只想从nfc更新1个密钥,而不会覆盖完整的NFC卡数据。NFC设备为ISO 14443-3A恩智浦MIFARE Ultralight (Ultralight )。请检查下面的代码,任何人都可以提供帮助。

代码语言:javascript
复制
 var payloadData = Data([0x02,0x65,0x6E])
  payloadData.append(self.record_to_write.data(using: .utf8)!)
                                    
                                let customTextPayload = NFCNDEFPayload.init(
                                   format: .nfcWellKnown,
                                   type: "T".data(using: .utf8)!,
                                   identifier: Data(),
                                   payload:payloadData
                                )
                                self.record_new_arr.append(customTextPayload)
let messge = NFCNDEFMessage.init(records: self.record_new_arr )
tag.writeNDEF(messge, completionHandler: { (error: Error?) in
            if nil != error{
                session.alertMessage = "Write NDEF message fail: \(error)"
                print("Write NDEF message fail: \(error)")
            }else{
                print("Write NDEF message successfull.")
                session.alertMessage = "Write NDEF message successfull."
            }

        })

只需防止使用swift将数据覆盖到nfc中。提前感谢

EN

回答 1

Stack Overflow用户

发布于 2020-07-04 04:53:15

NDEF格式并不是真正设计为附加到卡上或直接在卡上更新的。

由于使用TLV记录的数据的结构

T=终止符(1字节)

L=长度(1+字节)

V=值(0+字节)(这是要存储的数据)

然后是另一个终结者

然后,在相当多的情况下,要追加/更新,您将不得不重写整张卡或卡的某一大部分,因为长度可能需要更新。

只有极少数情况下,替换现有数据是有意义的。

因此,大多数实现只会写入完整的NDEF消息,覆盖卡上已有的内容,因为要进行更新,您无论如何都必须读取整个消息。

更新NDEF消息的唯一方法是将其读取到您的程序中,更新/附加内存中的记录,将整个内容写回到卡中。

因此,简而言之,您的要求是不可能的(虽然在非常有限的情况下,您可能会自己计算出更改并在Type 2卡上进行更改,但这不适用于其他类型的卡)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62714592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档