2013-01-07 19 views
1

我知道這聽起來很奇怪,但我想從plist中存儲和檢索Objective-C代碼的小片段。場景是這樣的:在plist文件中存儲Objective-C代碼

我有一個存儲核心圖像過濾器預設的plist。這是所有與數值(大部分預設)的所有常規。然而,一些預置需要像「colorColor」這樣的CIColor對象(即[CIColor colorWithRed:0.75 green:0.75 blue:0.75])。有沒有辦法在plist中存儲類似的東西(作爲NSString或NSData),然後將其作爲可用代碼檢索?

我意識到一個合乎邏輯的選擇是單獨存儲RGB值,但前一個選項只會更方便一些,因爲還有其他宏值。

回答

5

您是否希望plist文件能夠被人類編輯?

如果不是,請注意CIColor符合NSCoding協議。因此,您可以使用NSKeyedArchiver將其轉換爲NSData,並將NSData存儲在plist中。當您閱讀plist時,您可以使用NSKeyedUnarchiverNSData轉換回CIColor。其實CIFilter也符合NSCoding。也許你可以將你的過濾器對象歸檔和解壓縮。它會自動存檔和解除其屬性。

+1

這就是做這件事的方法。代碼示例是[here](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DrawColor/Tasks/StoringNSColorInDefaults.html)。 – SAE

2

您可以將其存儲爲一個字符串,然後解析它。

但爲什麼要這麼做?將顏色轉換爲NSData對象,然後將其存儲在plist文件中。

相關問題