欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(六)

由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(六)

2024/10/24 7:30:57 来源:https://blog.csdn.net/mydo/article/details/141783425  浏览:    关键词:由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(六)

在这里插入图片描述

概述

在 WWDC 24 中,苹果推出了数据库框架 SwiftData 2.0 版本。听说里面新增了能让数据记录“借尸还魂”的绝妙法器,到底是真是假呢?

在这里插入图片描述

我们在上篇博文中介绍了 History Trace 是如何稳妥的处理数据删除操作的。而在这里,我们将继续介绍 SwiftData 2.0 中另一个新特性:“墓碑”(Tombstone)。

在本篇博文中,您将学到如下内容:

  • 概述
  • 10. SwiftData 2.0 中的“墓碑”机制让已“死”的数据“借尸还魂”
  • 11. History Trace 机制的“美中不足”
  • 总结

这是本系列第六篇,也是最后一篇博文。闲言少叙,让我们马上开始 SwiftData 精彩的探究之旅吧!

Let‘s dive in!!!😉


10. SwiftData 2.0 中的“墓碑”机制让已“死”的数据“借尸还魂”

从 SwiftData 2.0 开始,苹果加入了新的“墓碑”(Tombstone)机制。它的作用很简单:就是让”有事烧纸“的数据“起死回骸”。

我们可以在托管类型中任意指定的属性上开启“墓碑”:

@Model
class Item {@Attribute(.preserveValueOnDeletion)var name: Stringvar timestamp: Dateinit(name: String) {self.name = nametimestamp = .now}
}

如上代码所示,我们在 Item 类型的 name 属性上通过 @Attribute(.preserveValueOnDeletion) 宏开启了 Tombstone 模式。一旦为托管类型开启“墓碑”模式,当该类型的实例从容器被删除后就会变为“死而不僵的尸体”,就问你们怕不怕?😃

在开启了“墓碑”模式之后,当记录被删除时我们可以通过历史记录追踪 Change 中 DefaultHistoryDelete 结构的 tombstone 属性来访问它:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com