Swift 3. NSFetchRequest 属性ToFetch

Swift 3. NSFetchRequest propertiesToFetch

在Swift3中我们使用NSFetchRequest的时候要指定NSFetchRequestResult。但是如何获取一组属性值呢?如果我使用这样的东西

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

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

我忘记为 NSFetchRequest 设置 resultType

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

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

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