2017-01-20 53 views
0

的Xcode可以從核心數據實體產生這樣的:對於@NSManaged變量,Fileprivate是否足夠?

// This file was automatically generated and should not be edited. 

import Foundation 
import CoreData 

extension Media { 
    @NSManaged public var imageString: String? 
} 

我的同事已經編輯它來隱藏的字符串,只露出一個URL:

extension Media { 
    @NSManaged fileprivate var imageString: String? 
    public var image: URL? { 
     return imageString != nil ? URL(string: imageString!) : nil 
    } 
} 

fileprivate(或private)即可使用在這種情況下?這是在Core Data中存儲URL的最佳實踐嗎?

回答

2

這是有效的。這是否是一個好主意取決於你如何使用URL。

您可以直接保存網址,而不需要字符串屬性。只需在Core Data模型編輯器中將該屬性設置爲「可變形」類型即可。由於URL類型符合NSCoding,核心數據會自動將其轉換爲NSData或從NSData轉換。您將爲該屬性分配一個URL,稍後再讀取URL。

這很好除非你需要根據URL獲取對象。您不能在提取謂詞中使用可變形屬性,因此,例如,如果使用可變形屬性,則無法使用包含stackoverflow.com的URL來提取每個對象。如果你需要這樣做,你的方法是一個很好的方法。如果不是,則可變形屬性更簡單。