ios - 在 CoreData ios swift3 中仅获取表的几个属性

标签 ios swift xcode core-data swift3

我将 coreData 实体定义为

enter image description here

enter image description here

在 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 对象。不过我只想得到几列。假设仅使用 namecreationDate。如何做到这一点?

我已经尝试过

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/

相关文章:

swift - .presentScene/Swift 3 (SpriteKit) 的奇怪错误

ios - 我无法将按钮连接到@IBAction

objective-c - undefined symbol : "_OBJC_CLASS_$ error

ios - 可以从 UISearchBar 中删除背景或边框吗?

ios - 从 iOS 应用程序上传文件到服务器

objective-c - 有什么方法可以禁用 'message to nil not throwing an error' 行为(即我想要错误)?

iphone - XCode/iOS 中特定于区域设置的默认设置

ios - AVAssetExportSession 进度在 ipad 上卡住,但在模拟器上则不然

ios - 如何使用 PHPickerViewController 仅显示有限的照片?

swift - canOpenURL 谷歌地图问题