RaptureXML迭代:usingBlock警告和崩溃

时间:2012-05-24 09:55:12

标签: ios xml nsarray loops

我正在解析一个如下所示的XML文件:

<partie numero="1">
      <exercice numero="1" libelle="blabla"></exercice>
      <exercice numero="2" libelle="anything"></exercice>
</partie>

我正在使用Rapture XML库,正如GitHub上所解释的那样,我执行以下操作:

RXMLElement *rxmlPartie = [rxmlParties child:@"partie"];
NSArray *rxmlUnExercice = [rxmlPartie children:@"exercice"];

我可以使用此行正确打印partie中的“numero”属性:

 NSLog(@"Partie #%@",[rxmlPartie attribute:@"numero"] );

但是当我尝试在我的NSArray上使用iterate方法时:

[rxmlPartie iterate:@"partie.exercice" usingBlock: ^(RXMLElement *exercice) {NSLog(@"Exercice: %@ (#%@)", [exercice attribute:@"libelle"], [exercice attribute:@"numero"]);}];

我收到警告,应用程序崩溃,说:

-[RXMLElement iterate:usingBlock:]: unrecognized selector sent to instance 0xc67f870
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-    [RXMLElement iterate:usingBlock:]: unrecognized selector sent to instance 0xc67f870'

我忘了导入某些内容,还是以糟糕的方式实现该方法?

如果我尝试使用iterateWithRootXPath ...

,会发生同样的错误

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

所以,我发现了我的问题。

在做这个之前我对Rapture XML没有任何了解......所以我坚持使用doc(就像有人在学校告诉我的那样:-))。但问题是doc中使用的方法,这个“iterate usingBlock”没有在框架中定义。

而不是使用

[rxmlPartie iterate:@"partie.exercice" usingBlock: ^(RXMLElement *exercice)     {NSLog(@"Exercice: %@ (#%@)", [exercice attribute:@"libelle"], [exercice attribute:@"numero"]);}];

我正在使用

[rxmlPartie iterate:@"exercice" with: ^(RXMLElement *exercice)     {NSLog(@"Exercice: %@ (#%@)", [exercice attribute:@"libelle"], [exercice attribute:@"numero"]);}];

在框架内定义明确!

这是我的一天!!