对于 @NSManaged 变量,fileprivate 是不是足够?
Posted
技术标签:
【中文标题】对于 @NSManaged 变量,fileprivate 是不是足够?【英文标题】:Is fileprivate adequate for @NSManaged variables?对于 @NSManaged 变量,fileprivate 是否足够? 【发布时间】:2017-06-04 23:19:31 【问题描述】:Xcode 可以从 Core Data 实体生成它:
// 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 的最佳做法吗?
【问题讨论】:
【参考方案1】:这行得通。这是否是一个好主意取决于您需要如何使用 URL。
您可以直接保存 URL,无需字符串属性。只需在 Core Data 模型编辑器中将属性设置为“可转换”类型即可。由于 URL 类型符合NSCoding
,Core Data 会自动将其转换为NSData
。您可以为该属性分配一个 URL,然后再读回 URL。
这很好除非您需要根据 URL 获取对象。您不能在 fetch 谓词中使用可转换的属性,因此使用可转换的属性,例如,您不能使用包含 ***.com
的 URL 获取每个对象。如果你需要做这样的事情,你的方法是一个很好的方法。如果没有,transformable 属性更简单。
【讨论】:
以上是关于对于 @NSManaged 变量,fileprivate 是不是足够?的主要内容,如果未能解决你的问题,请参考以下文章
如何将@NSManaged 对象类中的变量初始化为 JSON 值?
在 NSManagedObject 类中初始化 @NSManaged 变量?