【问题标题】:Getting only few properties of a table in CoreData ios swift3在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 对象。但是我只想得到几列。假设只有namecreationDate。怎么做?

我试过了

let request: NSFetchRequest<TTFinds> = TTFinds.fetchRequest()
        request.propertiesToFetch = NSArray.init(objects: "name", "creationDate", "image", "latitude", "longitude",
            "area.name") as? [Any];                

但是 area.name 给出了错误。

【问题讨论】:

  • 你得到什么错误?
  • @MartinR 错误获取请求,sigabrt

标签: ios swift xcode core-data swift3


【解决方案1】:

忘记propertiesToFetch 并获取整个对象。

首先,如果您使用结果类型的字典,则只能检索选择性属性。它将使您的代码更加繁琐和冗长,而不会提高效率。

其次,如果你只是获取对象,即使它们有很多,Core Data 也会“在后台”进行各种优化,只获取它需要的东西。这是通过简单地访问您需要的属性来触发的。

因此,假设您仅获取某些属性的目的是节省内存或减少性能瓶颈,在您真正遇到这些瓶颈之前不要担心。

注意:你的关系应该是反向关系!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-04
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    相关资源
    最近更新 更多