fileprivate是否适合@NSManaged变量?

时间:2017-01-20 03:36:54

标签: swift core-data nsmanagedobject access-modifiers

Xcode可以从Core Data实体生成:

//  This file was automatically generated and should not be edited.

import Foundation
import CoreData

extension Media {
    @NSManaged public var imageString: String?
}

我的同事已编辑它以隐藏字符串并仅显示网址:

extension Media {
    @NSManaged fileprivate var imageString: String?
    public var image: URL? {
        return imageString != nil ? URL(string: imageString!) : nil
    }
}

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

1 个答案:

答案 0 :(得分:2)

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

您可以直接保存URL,而无需使用字符串属性。只需将物业变为“可变形的”物品即可。键入Core Data模型编辑器。由于网址类型符合NSCoding,因此核心数据会自动将其转换为NSData。您可以为该属性分配一个URL,稍后再读取URL。

除非您需要根据网址获取对象,否则 。您无法在提取谓词中使用可转换属性,因此使用可转换属性时,您无法使用包含stackoverflow.com的网址获取每个对象。如果您需要做类似的事情,那么您的方法很好。如果不是,则可变形属性更简单。