Ios Upnpx LastChangeParser

Ios Upnpx LastChangeParser,ios,xcode,upnp,sonos,Ios,Xcode,Upnp,Sonos,我正在测试upnpx库以控制sonos多房间音频系统。。。工作顺利。 我对事件只有一个主要问题。 如果我从sonos渲染器中得到一个卷更改事件,如下所示 <Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="66"/><Volume channel="LF" val="100"/><Volu

我正在测试upnpx库以控制sonos多房间音频系统。。。工作顺利。 我对事件只有一个主要问题。 如果我从sonos渲染器中得到一个卷更改事件,如下所示

<Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="66"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>
应该是

InstanceID = 0; Volume = 66;
如果有人能告诉我正确的方向,我将非常高兴

致意 自由贸易区

upnpxdemo[66489:1310b]BasicParser.h didStartElement:propertyset
upnpxdemo[66489:1310b]basicPasser.h didStartElement:属性
upnpxdemo[66489:1310b]基本密码。h didStartElement:LastChange
upnpxdemo[66489:1310b]基本密码。h双文件项:最后更改,对象:
upnpxdemo[66489:1310b]LastChange-元素:LastChange,值:
upnpxdemo[66489:1310b]basicPasser.h didStartElement:事件
upnpxdemo[66489:1310b]basicPasser.h didStartElement:InstanceID
upnpxdemo[66489:1310b]基本资源。h didStartElement:卷
upnpxdemo[66489:1310b]LastChangeParser.h void propertyName名称:卷值:52
upnpxdemo[66489:1310b]基本资源。h didStartElement:卷
upnpxdemo[66489:1310b]LastChangeParser.h void propertyName:卷值:100
upnpxdemo[66489:1310b]基本资源。h didStartElement:卷
upnpxdemo[66489:1310b]LastChangeParser.h void propertyName:卷值:100
upnpxdemo[66489:1310b]LastChangeParser.h void propertyName:InstanceID值:100
upnpxdemo[66489:1310b]事件字典:{
InstanceID=100;
体积=100;
}

事件是正确的。我下载了upnpx源代码,但无法理解
BasicParser
UPnPEventParser
逻辑-我只在Objective-C中工作了这么长时间。我想知道upnpx是如何解释同一个键可以有多个值,不同的只是
channel
属性。这是
LastChange
事件命名约定中的一个例外,键通常是唯一的。事件中最后出现的
Volume
是100,因此upnpx可能一直在替换
Volume
键的值


但这并不能解释InstanceID的错误编号。你确定你猜对了吗?你能发布一个完整的
事件转储吗
NSDictionary?

谢谢你的回答,我添加了事件日志。。。thx FTZSo i对
卷的理解是正确的。日志引用它3次,但从未提及
通道
属性,这意味着这3个值存储在同一个NSDictionary键中(覆盖以前的值)。不正确的
InstanceID
似乎以某种方式与此覆盖相关,因为它得到了相同的值。我没有时间研究upnpx代码。但这肯定是一个bug,应该在upnpx站点上填补一个缺陷。嗨,帕维尔,谢谢你对这个问题的评估!!我将在upnpx组填写一个问题。感谢堆栈溢出=向上投票和/或接受答案:)
InstanceID = 0; Volume = 66;
upnpxdemo[66489:1310b] BasicParser.h didStartElement: propertyset

upnpxdemo[66489:1310b] BasicParser.h didStartElement: property

upnpxdemo[66489:1310b] BasicParser.h didStartElement: LastChange

upnpxdemo[66489:1310b] BasicParser.h didEndElement: LastChange, obj: <Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="52"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>

upnpxdemo[66489:1310b] LastChange - element:LastChange, value:<Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="52"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Event

upnpxdemo[66489:1310b] BasicParser.h didStartElement: InstanceID

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:52

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:100

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:100

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:InstanceID value:100

upnpxdemo[66489:1310b] Event Digctionary: {
    InstanceID = 100;
    Volume = 100;
}