- class QNdefFilter#
QNdefFilter
类提供了一个匹配NDEF消息的过滤器。更多…概要#
方法#
def
__init__()
def
appendRecord()
def
clear()
def
match()
def
orderMatch()
def
recordAt()
def
recordCount()
注意
此文档可能包含从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);
此过滤器指定消息必须恰好包含一个使用 Mime 类型名格式 () 和任何 type () 的 NDEF 记录。
处理消息中的额外记录
如果消息中包含不符合过滤器中任何记录的记录,匹配算法将返回
false
。过滤器示例
下表中的每个过滤器记录由以下参数指定(按给定顺序)
typeNameFormat
- 包含记录的 typeNameFormat ()。type
- 包含记录的 type ()。minimum
- 包含消息中记录出现的最小次数。maximum
- 包含消息中记录出现的最大次数。
过滤器包含多个记录。
消息由多个
QNdefRecord
组成。在下表中,仅显示每个记录的 typeNameFormat () 和 type (),因为其他参数对过滤不重要。- __init__()链接到此处定义
构造一个新的NDEF过滤器。
- __init__(other)
- 参数:
other –
QNdefFilter
构造一个新的NDEF过滤器,它是对
other
的拷贝。- appendRecord(typeNameFormat, type[, min=1[, max=1]])链接到此处定义
- 参数:
typeNameFormat –
TypeNameFormat
type –
QByteArray
min – int
max – int
- 返回类型:
bool
向NDEF过滤器中添加一个类型名为
typeNameFormat
和类型type
的记录。此记录必须在NDEF消息中出现min
到max
次。如果成功添加记录则返回
true
。否则返回false
。- appendRecord(record)
- 参数:
record –
Record
- 返回类型:
bool
验证
record
并将其添加到NDEF过滤器。如果成功添加记录则返回
true
。否则返回false
。- clear()链接到此处定义
清除过滤器。
- match(message)链接到此处定义
- 参数:
message –
QNdefMessage
- 返回类型:
bool
如果
message
与给定过滤器匹配,则返回true
。否则返回false
。有关匹配的更详细解释,请参阅
匹配算法
。- orderMatch()链接到此处定义
- 返回类型:
bool
如果过滤器在匹配时考虑NDEF记录的顺序,则返回
true
。否则返回false
。另请参阅
- recordAt(i)#
- 参数:
i – 整数
- 返回类型:
记录
返回索引为
i
的 NDEF 记录。i
必须是一个有效索引(即 0 <= i <recordCount()
)。另请参阅
- recordCount()#
- 返回类型:
整数
返回过滤器中的 NDEF 记录数量。
- setOrderMatch(on)#
- 参数:
on – 布尔值
设置过滤器的排序要求。如果
on
为true
,则过滤器只有在过滤器的记录顺序与 NDEF 消息中的记录顺序相匹配时才会匹配。如果on
为false
,则在匹配时不考虑记录顺序。默认情况下,不考虑记录顺序。
另请参阅