键值编码

时间:2008-12-18 20:25:08

标签: iphone objective-c cocoa cocoa-touch key-value-observing

当我启动一个简单的iPhone应用程序时,我有一种直接的方法将XML摘录的键/值对转换为NSDictionary。问题是,我需要将那些曾经将我的UITableView填充的NSDictionary实例转换为自定义类,因为它们需要行为和额外的复杂性。这里的问题是,现在为了让我实例化一个对象并用Web服务中的键/值对填充其实例变量变得更加困难。我不能再把它扔进一个迭代XML并使用KVC设置其实例变量的方法。

那里有什么样的其他解决方案?

2 个答案:

答案 0 :(得分:8)

您仍然可以在自定义类上使用键值编码方法,只要您正确命名变量就没有区别了。尽管如此,当我使用XML时,我通常最终会测试每个节点名称或创建密钥查找表,因为我正在使用的数据源中的名称不符合键值编码。如果您可以控制数据源,则可以继续使用setValue:forKey:

如果您还没有,建议您阅读关于键值编码的this guide。它是Cocoa中许多优秀工具的基础。

答案 1 :(得分:1)

了解NSCoding。您可以使用NSCoding协议将对象,属性和所有内容保存为数据。

一旦您的对象符合NSCoding,您就可以使用NSKeyedArchiver归档整个对象数组。

请注意,如果您有大量对象,这可能会极大地影响应用程序在加载和保存期间在iPhone上的性能。