我创建了一个可以独立于其标记解析给定xml文件的应用程序。它在列表单级别的xml文件中工作得很好。我想在对象上分配xml值。由于xml可以是不同的,所以类也必须是通用的,数据成员也必须。我可以使用数据类型id来实现通用数据成员。但问题是不同的xml可以有不同数量的数据类型。那么可以在运行时决定数据成员的数量吗? (这里我加载xml两次是否有助于实现我们的目标?)
答案 0 :(得分:0)
Key-Value Coding完全符合您的需求,如果您想要快速和安全的话,您可以使用NSMutableDictionary。简单。
答案 1 :(得分:0)
从another question of the OP's来到这里。只是详细说明A-Live的答案:
如果对象只是值的完全通用持有者,那么您应该只使用NSMutableDictionary
。虽然它有效,但没有特别需要使用KVC。
如果对象具有一些固定属性加上任意数量的ad hoc属性,或者除了保持值之外还必须具有某些行为,那么您可以将NSMutableDictionary
包装在自定义类中。在这种情况下,当密钥与任何类的正常属性不对应时,您的自定义类将实现-valueForUndefinedKey:
以从字典中检索值。同样,它将实现-setValue:forUndefinedKey:
以允许通过将它们存储在字典中来设置ad hoc属性。
一旦定义了这两个方法,那么该类的客户端可以使用KVC来获取和设置属性值,使用-valueForKey:
和-setValue:forKey:
。
您实现的任何“未定义密钥”方法都可以通过将任何和所有密钥传递到字典完全允许,或者他们可以根据允许/已知属性列表检查密钥。此列表仍将在运行时建立,而不是在编译时固定,但是,如果您从某个地方获得该信息,则会建立一些额外的安全性。对于未知/不允许的密钥,只需调用super
的实现。
如果你愿意,这两种方法 - 更有可能是setter - 也可以实现与ad hoc属性相关的行为。
答案 2 :(得分:-1)