当我启动一个简单的 iPhone 应用程序时,我有一种直接的方法将 XML 摘录的键/值对转换为 NSDictionary。问题是,我需要将那些曾经填充我的 UITableView 的 NSDictionary 实例转换为自定义类,因为它们需要行为和额外的复杂性。这里的问题是,现在为了让我实例化一个对象并用来自 Web 服务的键/值对填充其实例变量变得更加困难。我不能再将它放入一个遍历 XML 并使用 KVC 设置其实例变量的方法中。
还有什么样的其他解决方案?
当我启动一个简单的 iPhone 应用程序时,我有一种直接的方法将 XML 摘录的键/值对转换为 NSDictionary。问题是,我需要将那些曾经填充我的 UITableView 的 NSDictionary 实例转换为自定义类,因为它们需要行为和额外的复杂性。这里的问题是,现在为了让我实例化一个对象并用来自 Web 服务的键/值对填充其实例变量变得更加困难。我不能再将它放入一个遍历 XML 并使用 KVC 设置其实例变量的方法中。
还有什么样的其他解决方案?
您仍然可以在自定义类上使用键值编码方法,只要您适当地命名变量,那里就没有区别。尽管如此,当我使用 XML 时,我通常最终会测试每个节点名称或创建一个键查找表,因为我正在使用的数据源中的名称不符合键值编码。但是,如果您可以控制数据源,则可以继续使用setValue:forKey:
.
如果您还没有,我建议您阅读有关键值编码的指南。它是 Cocoa 中许多优秀工具的基础。
查看 NSCoding。您可以使用 NSCoding 协议将您的对象、属性和所有内容保存为数据。
一旦您的对象符合 NSCoding 标准,您就可以使用 NSKeyedArchiver 归档整个对象数组。
请注意,如果您有大量对象,这会在加载和保存期间极大地影响应用程序在 iPhone 上的性能。