核心数据实体全局数据
Posted
技术标签:
【中文标题】核心数据实体全局数据【英文标题】:Core Data Entity Global Data 【发布时间】:2021-04-13 15:55:27 【问题描述】:我有一个用于存储地震报告的核心数据实体。我想存储一些全局数据来跟踪数据上次更新的时间。
日期应该是商店中所有实体对象通用的单个日期。
我可以为此使用实体 userInfo 吗?我无法确定这是只读的还是可以在运行时更改。
有没有更好的方法?我不想将它存储在 UserDefaults 中,因为如果删除了 sql 文件,我希望“更新日期”数据也消失。
【问题讨论】:
【参考方案1】:除了实际数据之外,持久存储还可以包含有关存储的元数据。那将是一个很好的地方。元数据是NSPersistentStore
的一部分,因此您必须深入到NSPersistentContainer
才能获取并更改它。像这样的
guard let persistentStore = persistentContainer.persistentStoreCoordinator.persistentStores.first else
return
var metadata = persistentContainer.persistentStoreCoordinator.metadata(for: persistentStore)
metadata["updated"] = Date()
persistentContainer.persistentStoreCoordinator.setMetadata(metadata, for: persistentStore)
self.saveContext()
最后一行是因为在您保存更改之前不会保存元数据,即使它是元数据而不是实际数据。
最好先读取现有的元数据,因为 Core Data 会在其中放置一些自己的元数据。您可能无法破坏它,但请确保先阅读它并保留现有值。
【讨论】:
以上是关于核心数据实体全局数据的主要内容,如果未能解决你的问题,请参考以下文章