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

标签 iphone objective-c ios ipad core-data

我知道使用 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/

相关文章:

ios - 如何在ios中管理tableview内的按钮?

iphone - Objective-C:实例变量作为参数,但方法调用后实例变量为空

iphone - 条码阅读器 iPhone 应用程序

ios - 如何观察dealloc过程

iphone - 使用适用于 iOS 的 Dropbox Chooser SDK 时无法生成链接错误

ios - 如何限制文本字段在swift中只接受十进制值

iphone - 在 UIScrollView 内部时 UITableView 滚动问题

objective-c - 默认[NSTableViewDelegate tableView :sizeToFitWidthOfColumn:] doesn't get called

objective-c - 使用 Xcode 4 的 TableView 快速多点触控

ios - iPhone 的分发证书