PySide6.QtNfc.QNdefFilter

class QNdefFilter

QNdefFilter 类提供了一个用于匹配 NDEF 消息的过滤器。More_

概要

方法

注意

本文档可能包含从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()参数的值。

注意

在下面的讨论中,如果它们的typeNameFormattype参数匹配,我们将认为过滤记录是相等的。连接两条记录意味着分别添加它们的minimummaximum值。

无序匹配

如果不考虑记录的顺序,过滤器中的所有相等记录都可以被连接。结果过滤器将只包含唯一的记录,每条记录都有更新的minimummaximum值。

考虑以下示例:

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);

此过滤器指定消息必须包含一个具有Mime typeNameFormat ()的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 记录开始,但它以 Mime 开始。

已排序:无匹配

[( NfcRtd , “T”, 0, 2), ( Mime , “”, 1, 1), ( NfcRtd , “T”, 1, 1)]

[( NfcRtd , “T”), ( NfcRtd , “T”), ( Mime , “image/jpeg”)]

无序:匹配

有序过滤器不匹配,因为在 Mime 之后预期有一个 NfcRtd 记录,但消息中没有。

已订购:无匹配

[( NfcRtd , “T”, 0, 2), ( NfcRtd , “T”, 1, 1), ( Mime , “”, 1, 1)]

[( NfcRtd , “T”), ( Mime , “image/jpeg”)]

无序:匹配

两种情况都匹配,因为消息包含所需的最少记录,并且顺序正确。

已排序:匹配

__init__()

构建一个新的NDEF过滤器。

__init__(other)
Parameters:

其他QNdefFilter

构造一个新的NDEF过滤器,它是other的副本。

appendRecord(record)
Parameters:

记录Record

Return type:

布尔

验证record并将其附加到NDEF过滤器中。

如果记录成功追加,则返回true。否则返回false

appendRecord(typeNameFormat, type[, min=1[, max=1]])
Parameters:
Return type:

布尔

将具有类型名称格式 typeNameFormat 和类型 type 的记录附加到 NDEF 过滤器中。该记录必须在 NDEF 消息中出现 minmax 次之间。

如果记录成功追加,则返回true。否则返回false

clear()

清除过滤器。

match(message)
Parameters:

消息QNdefMessage

Return type:

布尔

如果message匹配给定的过滤器,则返回true。否则返回false

请参阅Matching Algorithms以获取更详细的匹配解释。

orderMatch()
Return type:

布尔

如果过滤器在匹配时考虑NDEF记录顺序,则返回true。否则返回false

另请参阅

setOrderMatch()

recordAt(i)
Parameters:

i – 整数

Return type:

Record

返回索引 i 处的 NDEF 记录。

i 必须是一个有效的索引(即 0 <= i < recordCount() )。

另请参阅

recordCount()

recordCount()
Return type:

整数

返回过滤器中NDEF记录的数量。

setOrderMatch(on)
Parameters:

on – 布尔值

设置过滤器的排序要求。如果 ontrue,则过滤器仅在过滤器中的记录顺序与NDEF消息中的记录顺序匹配时才会匹配。如果 onfalse,则在匹配时不考虑记录的顺序。

默认情况下,不考虑记录顺序。

另请参阅

orderMatch()

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