2017-01-20 50 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来提取每个对象。如果你需要这样做,你的方法是一个很好的方法。如果不是,则可变形属性更简单。