从获取中排除属性/字段 - 核心数据

Posted

技术标签:

【中文标题】从获取中排除属性/字段 - 核心数据【英文标题】:Excluding a property/field from fetching - Core Data 【发布时间】:2016-02-06 02:26:51 【问题描述】:

如何从获取中排除字段?例如我有 3 个字段:

    username : String?

    password : String?

    capturedImages : NSSet? of Images // 我想从获取中排除这个

我想排除capturedImages,因为它可能包含大量图像。如果我只想获取usernamepassword,我该怎么做?

【问题讨论】:

您是否为您的 NSFetchRequest 尝试了 setPropertiesToFetch? @Allen 你能给我举个例子吗?我还没试过 @EncioPeter 类似“request.propertiesToFetch = ["Attribute A", "Attribute B"...]" 【参考方案1】:

由于capturedImages 是一种关系,这些实体不会被预取(默认情况下),而是作为a fault in your object graph 的一部分存在。

在您专门访问该集合的项目之前,不会检索您的图像。

在不相关的注释中,您可以如下修改您的 NSManagedObject 子类,以便更轻松地在 Swift 中使用该对象。

不要将属性定义为可选,如果它在模型中不是可选的。 使用 Swift Set 类型代替 NSSet

强烈键入集合的内容。

@NSManaged var username: String
@NSManaged var password: String
@NSManaged var capturedImages: Set<Image>

这消除了不必要的解包或强制转换,并允许 Swift 在编译之前对您的代码进行类型检查。

【讨论】:

以上是关于从获取中排除属性/字段 - 核心数据的主要内容,如果未能解决你的问题,请参考以下文章

排除Laravel会从模型结果中追加值

如何从核心数据中获取唯一字段值(song_type)

EF 获取类的属性并排除特定属性(getType().GetProperties())

从核心数据中获取 Double 返回到文本字段

解析分页思想+分页实战

核心数据:从相关实体中获取