1

次のようなXMLファイルを解析しています。

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

私はRaptureXMLライブラリを使用しているので、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を使用しようとすると、同じエラーが発生します...

ご協力いただきありがとうございます!!

4

1 に答える 1

1

それで、私は自分の問題が何であるかを知りました。

これを行う前は、Rapture XMLとのペアリングについて何も知りませんでした...それで、私はドキュメントに固執しました(誰かが学校で私に言ったように:-))。しかし、問題は、ドキュメントで使用されているメソッドであるこの「iterateusingBlock」がフレームワークで定義されていないことでした。

使用する代わりに

[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"]);}];

これはフレームワーク内で明確に定義されています!

良い一日にしてくれた!!

于 2012-05-30T13:13:55.610 に答える