1

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

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

我意识到一个合乎逻辑的选择是单独存储 RGB 值,但前一个选项会更方便一些,因为还有其他宏值。

4

2 回答 2

5

您是否希望 plist 文件可供人类编辑?

如果不是,请注意CIColor符合NSCoding协议。因此,您可以将其转换为NSDatausingNSKeyedArchiver并将其存储NSData在 plist 中。当您阅读 plist 时,您可以将NSDataback 转换为CIColorusing NSKeyedUnarchiver

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

于 2013-01-07T23:37:45.743 回答
2

您可以将其存储为字符串,然后对其进行解析。

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

于 2013-01-07T23:37:58.367 回答