xml解析器终止了Objective-C

时间:2012-10-10 15:44:33

标签: objective-c xml nsxmlparser

我想在objective-c中解析我的xml文件,但是我收到了错误

 *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<Presentation1Name 0x74592f0> setValue:forUndefinedKey:]: this class is not key value
coding-compliant for the key slide.'
*** First throw call stack:
(0x1c93012 0x10d0e7e 0x1d1bfb1 0xb7d711 0xafeec8 0xafe9b7 0x5129 0xbb11c7 0x48c65ee 
 0x48c5f07 0xbaf6d2 0x2008 0x157b7 0x15da7 0x16fab 0x28315 0x2924b 0x1acf8 0x1beedf9 
0x1beead0 0x1c08bf5 0x1c08962 0x1c39bb6 0x1c38f44 0x1c38e1b 0x167da 0x1865c 0x1e5d 
0x1d85)

libc++abi.dylib: terminate called throwing an exception
(lldb) 

小写演示文稿,我没有错误,我无法解析label =“presentation1”但是当我将其更改为Upercase P - &gt;演示文稿我可以解析它但是已经终止了进程

请你给我一些解决问题的提示吗?

1 个答案:

答案 0 :(得分:3)

aPresentation是你自己的课程,所以很难确切知道它是由什么组成的。但是,当您尝试执行此操作时,您的错误即将出现(除非有更多代码未显示):

[aPresentation setValue:currentElementValue forKey:elementName];

这里你说你在对象aPresentation中有一个属性,名称为elementName;特别是你的错误是说没有名称为“slide”的属性

是否有名为“slide”的属性(变量)?显然不是。

我建议硬编码elementName是什么,因为显然他们没有与你的班级排成一行。

根据xml,您的属性(在一个演示文稿中)应命名为“幻灯片”,因此要么将类中的属性重命名为幻灯片,要么只是将元素名称更改为您知道的属性。

[aPresentation setValue:currentElementValue forKey:@"slideLabel"];

其中一些是猜测工作而没有看到Presentation1Name的类结构

我还想指出一些你没有遵循的约定,这使得这段代码很难阅读。属性名称应大写(第一个字母),包括类名中的数字是可以的但不经常使用,在这种情况下可能不需要。你正在检查elementName是否是幻灯片或幻灯片,并且真的那些东西不应该改变,你应该能够删除其中一个语句。我还建议总是使用括号,其他一些其他的声明不