在CoreData ios swift3中只获取表的几个属性
Posted
技术标签:
【中文标题】在CoreData ios swift3中只获取表的几个属性【英文标题】:Getting only few properties of a table in CoreData ios swift3 【发布时间】:2016-11-06 10:18:08 【问题描述】:我将 coreData 实体定义为
在 TTFinds 中
@nonobjc public class func fetchRequest() -> NSFetchRequest<TTFinds>
return NSFetchRequest<TTFinds>(entityName: "TTFinds");
我正在尝试将 TTFinds 列表设为
let request: NSFetchRequest<TTFinds> = TTFinds.fetchRequest()
do
let result = try appDel.persistentContainer.viewContext.fetch(request)
可以看出,TTFinds 得到了它的父 TTArea 对象。但是我只想得到几列。假设只有name
和creationDate
。怎么做?
我试过了
let request: NSFetchRequest<TTFinds> = TTFinds.fetchRequest()
request.propertiesToFetch = NSArray.init(objects: "name", "creationDate", "image", "latitude", "longitude",
"area.name") as? [Any];
但是 area.name 给出了错误。
【问题讨论】:
你得到什么错误? @MartinR 错误获取请求,sigabrt 【参考方案1】:忘记propertiesToFetch
并获取整个对象。
首先,如果您使用结果类型的字典,则只能检索选择性属性。它将使您的代码更加繁琐和冗长,而不会提高效率。
其次,如果你只是获取对象,即使它们有很多,Core Data 也会“在后台”进行各种优化,只获取它需要的东西。这是通过简单地访问您需要的属性来触发的。
因此,假设您仅获取某些属性的目的是节省内存或减少性能瓶颈,在您真正遇到这些瓶颈之前不要担心。
注意:你的关系应该是反向关系!
【讨论】:
以上是关于在CoreData ios swift3中只获取表的几个属性的主要内容,如果未能解决你的问题,请参考以下文章
Ios Swift3:lazy var fetchrequestcontroller 显示错误