fileprivate 是否适合@NSManaged 变量?
Is fileprivate adequate for @NSManaged variables?
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 模型编辑器中将 属性 设为 "transformable" 类型即可。由于 URL 类型符合 NSCoding
,Core Data 会自动将其转换为 to/from 和 NSData
。您可以将 URL 分配给 属性,稍后再阅读 URL。
很好除非您需要根据URL 获取对象。您不能在获取谓词中使用可转换属性,因此对于可转换属性,您无法获取每个包含 URL 且包含 whosebug.com
的对象。如果你需要做那样的事情,你的方法是一个很好的方法。如果没有,可变形属性更简单。
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 模型编辑器中将 属性 设为 "transformable" 类型即可。由于 URL 类型符合 NSCoding
,Core Data 会自动将其转换为 to/from 和 NSData
。您可以将 URL 分配给 属性,稍后再阅读 URL。
很好除非您需要根据URL 获取对象。您不能在获取谓词中使用可转换属性,因此对于可转换属性,您无法获取每个包含 URL 且包含 whosebug.com
的对象。如果你需要做那样的事情,你的方法是一个很好的方法。如果没有,可变形属性更简单。