繁体   English   中英

xml解析器终止了Objective-C

[英]xml parser terminated Objective-C

我想在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”,但是当我将其更改为大写字母P->演示文稿时,我可以解析它,但进程已终止

您能给我一些发现问题的提示吗?

aPresentation是您自己的课程,因此很难确切知道其组成。 但是,当您尝试执行此操作时会出现错误(除非有更多代码未显示):

[aPresentation setValue:currentElementValue forKey:elementName];

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

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

我建议对elementName是什么进行硬编码,因为显然它们未与您的类对齐。

根据xml,您的属性(在Presentation中)应命名为“ slides”,因此可以将类中的属性重命名为slides,或者只是将元素名称更改为您知道的名称。

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

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

我还想指出一些您未遵循的约定,这使该代码很难阅读。 属性名称应大写(首字母),包括类名称中的数字是可以的,但不经常使用,在这种情况下可能不需要。 您正在检查elementName是“幻灯片”还是“幻灯片”,并且实际上该东西不应该更改,因此您应该能够删除这些语句之一。 我还建议您始终使用方括号,而其他一些陈述则不要

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM