gpt4 book ai didi

swift - 一直从 Core Data 中获取数据还是将所有对象都保存在内存中?

转载 作者:行者123 更新时间:2023-11-28 15:17:11 26 4
gpt4 key购买 nike

在我的 iOS 应用程序中,我使用了多个 Core Data 实体并在每个实体中存储了大约 50 到 300 个对象。我没有直接使用 NSManagedObjects,而是像这样使用自定义类:

class Device {

var object: NSManagedObject?

var isFavorite: Bool {

didSet {

object?.setValue(isFavorite, forKey: "isFavorite")

}
}
}

在应用程序的某些 View 中,我只想要具有 isFavorite == true 的对象,因此我在 ViewDidLoad 中创建了一个带有谓词的 NSFetchRequest >。在其他 View 中,我希望所有对象都存储在实体中,因此我创建了一个新的 NSFetchRequest,但没有谓词。

问题在于,这不是很有效,并且会在呈现 View 时导致瞬间延迟(因为我在 ViewDidLoad 中获取)。一种解决方案是异步获取,但我想知道是否有更有效的方法。

因为我总是需要那些相同的 2-3 个实体,但只是谓词不同,所以在应用程序加载时获取所有实体、将所有对象保存在内存中并在 ViewDidLoad 中循环遍历它们是否有意义删除此 View 中不需要的那些?目前,我实际上是在获取每个 View (总共 10-15 个),因此凭内存工作似乎是个好主意。

有什么想法吗?非常感谢您的建议,谢谢!

最佳答案

如果同一数据的数据获取次数超过 15 次,那么最好只获取一次并在需要时使用它。如果您的所有数据库值在任何时候都发生了变化,您可以进行数据库调用并刷新您的数据。

关于swift - 一直从 Core Data 中获取数据还是将所有对象都保存在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46632048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com