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 中 NSFetchRequest 的多个 NSPredicates?