Swift fileprivate是否适合@NSManaged变量?
Xcode可以从核心数据实体生成: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
// 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获取每个对象。如果你需要这样做,你的方法是好的。如果不是,则可转换属性更简单