Swift 3. NSFetchRequest propertiesToFetch

Posted

技术标签:

【中文标题】Swift 3. NSFetchRequest propertiesToFetch【英文标题】: 【发布时间】:2016-09-20 07:38:11 【问题描述】:

在 Swift 3 中,当我们使用 NSFetchRequest 时,我们必须指定 NSFetchRequestResult。但是如何获得一组属性值呢?如果我使用这样的东西

let fetchRequest = NSFetchRequest<MyClass>(entityName: "MyClass")
fetchRequest.propertiesToFetch = ["myAttributeName"]

当我尝试执行获取请求时会触发异常。 error: -executeRequest: encountered exception = The database appears corrupt. 如果我删除带有propertiesToFetch 的行,我不会收到任何错误,但我会得到一个对象数组,而不是属性。

【问题讨论】:

哦,对不起。问题是我忘了设置fetchRequest.resultType = .dictionaryResultType 【参考方案1】:

我忘记为 NSFetchRequest 设置 resultType

let fetchRequest = NSFetchRequest<MyClass>(entityName: "MyClass")
fetchRequest.propertiesToFetch = ["myAttributeName"]
fetchRequest.resultType = .dictionaryResultType

【讨论】:

【参考方案2】:

实际上,在大多数情况下,最好使用对象数组而不是属性。 Core Data 将为您管理往返商店的最佳负载平衡。您可能最担心的事情(内存、性能、数据访问时间)实际上是没有保证的。

此外,这应该会产生更清洁、更安全和更简洁的代码。

【讨论】:

以上是关于Swift 3. NSFetchRequest propertiesToFetch的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 核心数据

Swift - NSFetchRequest 错误

Swift 中 NSFetchRequest 的多个 NSPredicates?

Swift NSFetchRequest 按一个属性分组

NSFetchRequest 上的 Swift2.0 CoreData 问题

Coredata NSFetchRequest DictionaryResultType 空属性 Swift