【问题标题】: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 的最佳做法吗?

【问题讨论】:

    标签: swift core-data nsmanagedobject access-modifiers


    【解决方案1】:

    这行得通。这是否是一个好主意取决于您需要如何使用 URL。

    您可以直接保存 URL,无需字符串属性。只需在 Core Data 模型编辑器中将属性设置为“可转换”类型即可。由于 URL 类型符合NSCoding,Core Data 会自动将其转换为NSData。您可以为该属性分配一个 URL,然后再读回 URL。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多