gpt4 book ai didi

iphone - 何时*不*使用 Core Data 类型 Transformable?

转载 作者:技术小花猫 更新时间:2023-10-29 10:21:43 25 4
gpt4 key购买 nike

我知道使用 Transformable 数据类型是在 Core Data 中存储数组或任何自定义对象的一种简单方法。我想知道什么时候应该使用 Transformable 而应该创建另一个实体并使用一对多关系。

假设它是一个字符串数组,是否存在会导致严重性能问题的最大元素数或最大字符串长度?

最佳答案

I would like to know when one should not use Transformable but should instead create another entity and use To-many relationship.

您应该只在绝对必要时才使用可转换属性。在某些情况下,它们不是便利或捷径,而是资源密集型必需品。

您很少使用 Core Data 来存储数组或字典等数据结构,因为 Core Data 主要用于建模/模拟,而不是用于存储/持久化。将数据结构变成一个大的、无逻辑的数据博客对于建模数据是没有用的。

可转换属性通常用于存储一些本身主动管理其持有的数据的类,例如转换 UIImage 以便您可以直接从 UI 存储中获取 UIImage 并将其全部取回。

回答您的主要问题:

I am more curious about how big the data can be until it affects performance and it's better to normalize them.

这主要取决于大小和复杂性的组合。每当您将一堆现有对象转换为数据 blob 时,您必须通过转换来读取整个博客。因此,如果您通过转换存储一个 1mb 的数组,则在运行反向转换时,您会在内存中得到一个 1mb 的数组。每个转换,无论多么小,都比访问普通属性或什至查找另一个托管对象花费更多的处理时间。因此,拥有大量经常访问的小转换也会对性能造成相当大的影响。

总是最好将大块数据分解为实体、属性和关系。这样做可以免费为您提供 Core Data 的所有灵 active 和优化。我发现自己使用 Core Data 代替数组和字典,因为一旦你真正了解 Core Data,它就会更容易使用。

我绝不会使用 Core Data 来存储转换后的字符串数组等。如果字符串没有逻辑,只有几十个,你还不如把数组写到 plist 文件中。与乱用可变形属性相比,它会更快、更容易。

关于iphone - 何时*不*使用 Core Data 类型 Transformable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783091/

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