2016-09-20 37 views
2

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

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

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

+0

哦,对不起。问题是我忘了设置'fetchRequest.resultType = .dictionaryResultType' –

回答

0

我忘了为NSFetchRequest设置resultType

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

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

此外,这应该导致更清洁,更安全和更简洁的代码。