在plist文件中存储Objective-C代码

时间:2013-01-07 23:21:53

标签: objective-c ios plist

我知道这听起来很奇怪,但我想从plist中存储和检索Objective-C代码的小片段。场景是这样的:

我有一个存储核心图像滤镜预设的plist。对于具有数值(大多数预设)的所有内容,这都很常见。但是,一些预设需要像“inputColor”这样的CIColor对象(即 [CIColor colorWithRed:0.75 green:0.75 blue:0.75] )。有没有办法在plist中存储类似的东西(作为NSString或NSData),然后将其作为可用代码检索?

我意识到一个逻辑替代方案是单独存储RGB值,但前一个选项只是比其他宏值更方便。

2 个答案:

答案 0 :(得分:5)

你想让plist文件被人类编辑吗?

如果没有,请注意CIColor符合NSCoding协议。因此,您可以使用NSData将其转换为NSKeyedArchiver并将NSData存储在plist中。当您阅读plist时,可以使用NSDataCIColor转换回NSKeyedUnarchiver

事实上,CIFilter也符合NSCoding。也许您可以归档和取消归档过滤器对象。它将自动归档和取消归档其属性。

答案 1 :(得分:2)

您可以将其存储为字符串然后解析它。

但为什么要这样做呢?将颜色转换为NSData对象,然后将其存储在plist文件中。