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 的对象。如果你需要做那样的事情,你的方法是一个很好的方法。如果没有,可变形属性更简单。