PySide6.QtNfc.QNdefFilter¶
- class QNdefFilter¶
QNdefFilter类提供了一个用于匹配 NDEF 消息的过滤器。More_…概要¶
方法¶
def
__init__()def
appendRecord()def
clear()def
match()def
orderMatch()def
recordAt()def
recordCount()def
setOrderMatch()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QNdefFilter封装了NDEF消息的结构,并用于匹配具有特定结构的消息。以下过滤器匹配包含单个智能海报记录的NDEF消息:
QNdefFilter filter; filter.append(QNdefRecord::NfcRtd, "Sp");
以下过滤器匹配包含URI、本地化文本和可选JPEG图像的NDEF消息。记录的顺序必须按照指定的顺序:
QNdefFilter filter; filter.setOrderMatch(true); filter.appendRecord(QNdefRecord::NfcRtd, "U"); filter.appendRecord<QNdefNfcTextRecord>(); filter.appendRecord(QNdefRecord::Mime, "image/jpeg", 0, 1);
match()方法可用于检查消息是否与过滤器匹配。匹配算法¶
过滤行为取决于
orderMatch()参数的值。注意
在下面的讨论中,如果它们的
typeNameFormat和type参数匹配,我们将认为过滤记录是相等的。连接两条记录意味着分别添加它们的minimum和maximum值。无序匹配¶
如果不考虑记录的顺序,过滤器中的所有相等记录都可以被连接。结果过滤器将只包含唯一的记录,每条记录都有更新的
minimum和maximum值。考虑以下示例:
QNdefFilter filter; filter.appendRecord<QNdefNfcTextRecord>(0, 1); filter.appendRecord<QNdefNfcTextRecord>(0, 1); filter.appendRecord(QNdefRecord::Mime, "", 1, 1); filter.appendRecord<QNdefNfcTextRecord>(1, 1); filter.setOrderMatch(false);
使用无序匹配,过滤器将简化为以下内容:
QNdefFilter filter; filter.appendRecord<QNdefNfcTextRecord>(1, 3); filter.appendRecord(QNdefRecord::Mime, "", 1, 1); filter.setOrderMatch(false);
一旦过滤器仅包含唯一记录,匹配算法会遍历消息并计算每种类型的实际记录数量。如果所有实际数量都符合相应的[最小值,最大值]范围,匹配算法将返回
true。有序匹配¶
如果记录的顺序很重要,则采用不同的方法。在这种情况下,相等的记录不能简单地连接在一起。然而,连续的相等记录仍然可以连接。然后,匹配算法会遍历消息,这次还会考虑记录的位置。
处理过滤器记录中的空类型¶
可以添加一个带有空
type的过滤记录。在这种情况下,空类型将作为任何类型的通配符。例如,过滤器可以定义如下:
QNdefFilter filter; filter.addRecord(QNdefRecord::Mime, "", 1, 1);
此过滤器指定消息必须包含一个具有
MimetypeNameFormat()的NDEF记录,以及任何type()。处理消息中的额外记录¶
如果消息包含一些与过滤器中的任何记录都不匹配的记录,匹配算法将返回
false。过滤示例¶
在下表中,每个过滤记录由以下参数指定(按给定顺序):
typeNameFormat- 包含记录的typeNameFormat()。type- 包含记录的type()。minimum- 包含消息中记录的最小出现次数。maximum- 包含消息中记录的最大出现次数。
过滤器包含多条记录。
消息由多个
QNdefRecord组成。在下表中,仅显示每个记录的typeNameFormat()和type(),因为其他参数对于过滤无关紧要。过滤器
消息
匹配结果
注释
空过滤器
空消息
匹配
空过滤器
非空消息
无匹配
非空过滤器
空消息
无匹配
[(
NfcRtd, “T”, 1, 2), (Mime, “”, 1, 1), (Empty, “”, 0, 100)][(
Mime, “image/jpeg”), (Empty, “”), (NfcRtd, “T”), (Empty, “”), (NfcRtd, “T”)]无序:匹配
已排序:无匹配
[(
NfcRtd, “T”, 0, 2), (Mime, “”, 1, 1), (NfcRtd, “T”, 1, 1)]无序:匹配
已订购:无匹配
[(
NfcRtd, “T”, 0, 2), (NfcRtd, “T”, 1, 1), (Mime, “”, 1, 1)]无序:匹配
两种情况都匹配,因为消息包含所需的最少记录,并且顺序正确。
已排序:匹配
- __init__()¶
构建一个新的NDEF过滤器。
- __init__(other)
- Parameters:
其他 –
QNdefFilter
构造一个新的NDEF过滤器,它是
other的副本。验证
record并将其附加到NDEF过滤器中。如果记录成功追加,则返回
true。否则返回false。- appendRecord(typeNameFormat, type[, min=1[, max=1]])
- Parameters:
typeNameFormat –
TypeNameFormattype –
QByteArraymin – int
max – int
- Return type:
布尔
将具有类型名称格式
typeNameFormat和类型type的记录附加到 NDEF 过滤器中。该记录必须在 NDEF 消息中出现min到max次之间。如果记录成功追加,则返回
true。否则返回false。- clear()¶
清除过滤器。
- match(message)¶
- Parameters:
消息 –
QNdefMessage- Return type:
布尔
如果
message匹配给定的过滤器,则返回true。否则返回false。请参阅
Matching Algorithms以获取更详细的匹配解释。- orderMatch()¶
- Return type:
布尔
如果过滤器在匹配时考虑NDEF记录顺序,则返回
true。否则返回false。另请参阅
返回索引
i处的 NDEF 记录。i必须是一个有效的索引(即 0 <= i <recordCount())。另请参阅
- recordCount()¶
- Return type:
整数
返回过滤器中NDEF记录的数量。
- setOrderMatch(on)¶
- Parameters:
on – 布尔值
设置过滤器的排序要求。如果
on为true,则过滤器仅在过滤器中的记录顺序与NDEF消息中的记录顺序匹配时才会匹配。如果on为false,则在匹配时不考虑记录的顺序。默认情况下,不考虑记录顺序。
另请参阅
- class Record¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
- PySide6.QtNfc.QNdefFilter.Record.typeNameFormat¶
- PySide6.QtNfc.QNdefFilter.Record.type¶
- PySide6.QtNfc.QNdefFilter.Record.minimum¶
- PySide6.QtNfc.QNdefFilter.Record.maximum¶