2

我制作了一个应用程序,它可以独立于标签解析给定的 xml 文件。它适用于列表单级 xml 文件。我想在对象上分配 xml 值。由于 xml 可以不同,因此类也必须是通用的,数据成员也必须是通用的。我可以通过使用数据类型 id 来实现通用数据成员。但问题是不同的 xml 可以有不同数量的数据类型。那么是否可以在运行时决定数据成员的数量?(这里我两次加载 xml 对实现我们的目标有用吗?)

4

3 回答 3

0

键值编码完全符合您的需求,如果您想要快速简单的东西,您可以使用 NSMutableDictionary。

于 2012-05-23T04:22:04.943 回答
0

从OP 的另一个问题来到这里。只是为了详细说明 A-Live 的答案:

如果对象只是一个完全通用的值持有者,那么您应该只使用NSMutableDictionary. 没有特别需要为此使用 KVC,尽管它可以工作。

如果对象有一些固定属性加上任意数量的临时属性,或者如果它除了保存值之外还必须有一些行为,那么您可以将一个包装NSMutableDictionary在自定义类中。-valueForUndefinedKey:在这种情况下,当键不对应于类的任何正常属性时,您的自定义类将实现从字典中检索值。同样,它将实现-setValue:forUndefinedKey:允许通过将临时属性存储在字典中来设置它们。

一旦定义了这两个方法,类的客户端就可以使用 KVC 来获取和设置属性值,使用-valueForKey:and -setValue:forKey:

您实现的任何“未定义键”方法都可以通过将任何和所有键传递给字典来完全允许,或者它们可以根据允许/已知属性列表检查键。该列表仍将在运行时建立,而不是在编译时固定,但是,如果您从某个地方获得该信息,它会建立一些额外的安全性。对于未知/不允许的键,只需调用 tosuper的实现。

如果您愿意,这两种方法(更可能是 setter)也可以实现与特定属性相关的行为。

于 2012-05-23T12:46:19.230 回答
-1

您可以使用Touch XMLTBXML来解决您的问题。

于 2012-05-23T04:53:35.137 回答