Xcode 可以从核心数据实体生成这个:
// 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 的最佳做法吗?
最佳答案
行得通。这是否是个好主意取决于您需要如何使用 URL。
您可以直接保存 URL,而无需字符串属性。只需在 Core Data 模型编辑器中将该属性设为“可转换”类型即可。由于 URL 类型符合 NSCoding
,Core Data 会自动将其转换为 NSData
。您可以为该属性分配一个 URL,稍后再读取 URL。
这很好除非您需要根据 URL 获取对象。您不能在获取谓词中使用可转换的属性,因此对于可转换的属性,您不能,例如,使用包含 stackoverflow.com
的 URL 获取每个对象。如果你需要做那样的事情,你的方法是一个很好的方法。如果不是,则可转换属性更简单。
关于swift - fileprivate 是否适合@NSManaged 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755679/