我将 coreData 实体定义为
在 TTFinds 中
@nonobjc public class func fetchRequest() -> NSFetchRequest<TTFinds> {
return NSFetchRequest<TTFinds>(entityName: "TTFinds");
}
我正在尝试将 TTFinders 列表获取为
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 给出了错误。
最佳答案
忘记propertiesToFetch
并只获取整个对象。
首先,如果您使用字典结果类型,则只能检索选择性属性。它会让你的代码变得更加繁琐和冗长,而且效率没有任何提高。
其次,如果您只是获取对象,即使对象数量很多,Core Data 也会“在幕后”进行各种优化,然后只获取所需的内容。只需访问您需要的属性即可触发此操作。
因此,假设您仅获取某些属性的目的是为了节省内存或减少性能瓶颈,那么在实际遇到这些瓶颈之前不必担心。
注意:你们的关系应该是反向关系!
关于ios - 在 CoreData ios swift3 中仅获取表的几个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40448201/