Iphone 什么';在iOS的核心数据中存储复杂数据结构的最佳实践是什么?

Iphone 什么';在iOS的核心数据中存储复杂数据结构的最佳实践是什么?,iphone,ios,json,core-data,Iphone,Ios,Json,Core Data,我有一个复杂的数据结构,还有一些用于查询的其他数据字段,需要与核心数据一起保存以备将来使用。我正在考虑将复杂的数据结构序列化为JSON字符串,并作为一个字符串字段存储在核心数据实体中,而不是创建具有许多属性的实体。这个复杂的数据结构纯粹是为了将来使用而保存的,不需要查询任何属性,但是我确实需要查询其他数据字段,因此我考虑使用核心数据 我想知道这(存储为JSON字符串)是最佳实践还是有更好的解决方案?简单回答,不,这不是最佳解决方案。如果您不想用您创建的数据模型存储对象,那么核心数据将不会给您带来

我有一个复杂的数据结构,还有一些用于查询的其他数据字段,需要与核心数据一起保存以备将来使用。我正在考虑将复杂的数据结构序列化为JSON字符串,并作为一个字符串字段存储在核心数据实体中,而不是创建具有许多属性的实体。这个复杂的数据结构纯粹是为了将来使用而保存的,不需要查询任何属性,但是我确实需要查询其他数据字段,因此我考虑使用核心数据


我想知道这(存储为JSON字符串)是最佳实践还是有更好的解决方案?

简单回答,不,这不是最佳解决方案。如果您不想用您创建的数据模型存储对象,那么核心数据将不会给您带来什么好处。基本上,您将拥有一堆不透明的对象,在对其json字符串进行反序列化之前,您无法区分这些对象。如果这足以满足您的需要,那么我建议您将对象归档到磁盘,并跳过核心数据的开销。

在我的场景中,我有一个复杂的数据结构和许多其他属性,我计划存储在核心数据中。这基本上是一个任务队列,我有任务元数据,它是一个复杂的数据结构,还有一系列其他字段,例如所有者、优先级、时间、作业ID…,我需要对这些字段进行查询,但只有任务作业线程需要任务元数据中的数据。啊,我没有意识到这一点。我仍然建议不要这样做,因为这感觉像是对核心数据的滥用(如果你已经有了一个数据模型,为什么现在退出并用这个数据作弊?)。但是……我不认为这会导致任何技术问题,只要你照原样对待它,它基本上是一个二进制字段,你不能搜索、排序或过滤。谢谢@Paul,是的,它是有效的,我正在寻找“最佳实践”。如果我没有核心数据,你建议使用什么?我曾考虑将数据归档或序列化到磁盘,但这对于查询来说并不理想。如果这只是不透明的数据,您不需要检查数据本身,那么我建议将其归档到磁盘,将路径存储在核心数据对象上。如果您需要对这些对象进行反序列化,以确定要查找的对象,那么我建议您咬紧牙关,将其添加到数据模型中,并将其存储到与其他核心数据实体相关的数据中。通过将它们存储为原始json,您试图避免的痛点是什么?谢谢@Paul。这个数据结构包含嵌套的字典和数据数组,如果我将它们创建为实体,我可能最终会创建多个相关实体,或者存储数据,或者读取数据,这将是相当多的代码。。。不整洁。JSON或XML似乎是存储此类数据的最佳格式。我有点不喜欢存储档案文件路径的想法。。。