swift - fileprivate 是否适合@NSManaged 变量?

标签 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 fileprivate var imageString: String?
    public var image: URL? {
        return imageString != nil ? URL(string: imageString!) : nil
    }
}

在那种情况下可以使用 fileprivate(或 private)吗?这是在 Core Data 中存储 URL 的最佳做法吗?

最佳答案

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

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

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

关于swift - fileprivate 是否适合@NSManaged 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755679/

相关文章:

core-data - 如何在 Core Data 中进行 NSManagedObject 的深度复制

arrays - 如何获取另一个数组中的数组元素?

ios - XCode:从核心数据图中排除抽象实体

ios - 在索引 0 处插入元素,NSManagedObject

iphone - 在 NSFetchedResultsController 跟踪更改时重置 NSPersistentStore 后崩溃

ios - 获取要删除的托管对象数组后,如何删除数组中的所有对象?

ios - 创建具有相同属性重复条目的核心数据对象?

ios - Swift 弱引用混淆

ios - 如何在 RxSwift 中等待可变数组中的所有可观察对象完成

iphone - 方法在一秒钟内被调用多次,但它应该在很短的时间跨度内只运行一次