2016-07-15 54 views
0

我試圖把實體核心數據存儲,每一個具有非標準數據類型 - 一種是NSDocument,另一個是一個NSURL。我在.xcdatamodeld中得到了,我需要將它們聲明爲Transformable。我想需要補充一點,就是實現NSValueTransformer把它們變成NSData的在哪裏實施NSValueTransformer的核心數據在斯威夫特

我覺得這個問題應該是簡單的回答(...或者是有一個默認的變壓器,將自動做到這一點?):其中我執行它?我還沒有在Swift中找到一個明確的例子。有一個Objective-C example,但是.h和.m文件的分離使得我不清楚這會在Swift中發生。

假設我有一個名爲筆記本採用所謂folderURL的屬性的實體類型 - 在實際變量類型的數據庫可轉換的,和類型NSURL的。 (我使用它作爲例子,因爲它更簡單 - 請不要告訴我只是將NSURL轉換爲字符串,因爲這不適用於其他Transformable。)

問題是:where我是否把folderVL的NSValueTransformer,假設我需要一個? Notebook應該執行它嗎?應該Notebook + CoreDataProperties?或者我是否需要一個名爲FolderURL的單獨子類來實現它,如果是這樣,我如何在Notebook(和/或Notebook + CoreDataProperties)中引用該子類?

(有一個similar title前面一個問題,但他們似乎比這已經得到了遠一點已經 - 他們不問或證實有關「何處」)

回答

1

「去哪兒」只是您項目中的任何地方。確保您的NSValueTransformer子類在運行時存在的任何位置。實施NSValueTransformer子類,並在核心數據模型中輸入類名作爲值轉換器。

然而,有默認的變壓器。核心數據可以自動轉換任何採用NSCoding協議的類。在這種情況下,您將該屬性標記爲可轉換的,但不包括類名稱。這包括NSURL,所以你不需要轉換它或將其轉換爲字符串。

對於您的NSDocument子類,則可以選擇在類中實現NSCoding或爲文檔類型實現NSValueTransformer子類。