Swift fileprivate是否适合@NSManaged变量?

Swift fileprivate是否适合@NSManaged变量?,swift,core-data,nsmanagedobject,access-modifiers,Swift,Core Data,Nsmanagedobject,Access Modifiers,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

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
)吗?这是将URL存储在核心数据中的最佳实践吗?

有效。这是否是个好主意取决于您需要如何使用URL

您可以直接保存URL,而不需要字符串属性。只需在核心数据模型编辑器中将属性设置为“可转换”类型。由于URL类型符合
NSCoding
,核心数据将自动将其转换为
NSData
。您将为该属性分配一个URL,然后将URL读回


这很好,除非您需要根据URL获取对象。您不能在获取谓词中使用可转换属性,因此,例如,对于可转换属性,您不能使用包含
stackoverflow.com
的URL获取每个对象。如果你需要这样做,你的方法是好的。如果没有,则transformable属性更简单。

有效。这是否是个好主意取决于您需要如何使用URL

您可以直接保存URL,而不需要字符串属性。只需在核心数据模型编辑器中将属性设置为“可转换”类型。由于URL类型符合
NSCoding
,核心数据将自动将其转换为
NSData
。您将为该属性分配一个URL,然后将URL读回

这很好,除非您需要根据URL获取对象。您不能在获取谓词中使用可转换属性,因此,例如,对于可转换属性,您不能使用包含
stackoverflow.com
的URL获取每个对象。如果你需要这样做,你的方法是好的。如果不是,则可转换属性更简单