【问题标题】:What's the best practice to store complex data structure in core data on iOS?在 iOS 的核心数据中存储复杂数据结构的最佳实践是什么?
【发布时间】:2011-10-16 15:16:39
【问题描述】:

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

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

【问题讨论】:

    标签: iphone ios json core-data


    【解决方案1】:

    简短的回答,不,这不是最好的解决方案。如果你不想用你创建的数据模型来存储对象,那么 Core Data 会给你带来很少的好处。您基本上将拥有一堆不透明的对象,除非您反序列化其 json 字符串,否则您将无法区分这些对象。如果这足以满足您的需求,那么我建议您将对象归档到磁盘并跳过 Core Data 的开销。

    【讨论】:

    • 在我的场景中,我有一个复杂的数据结构和许多其他属性,我计划将它们存储在核心数据中。这基本上是一个任务队列,我有任务元数据,它是一个复杂的数据结构,还有一堆其他字段,例如owner、priority、time、jobid...,我需要对这些字段进行查询,但只有任务作业线程需要任务元数据中的数据。
    • 啊,我没有意识到你问题的措辞。我仍然建议不要这样做,因为这感觉像是对 Core Data 的滥用(如果你已经有了数据模型,为什么现在退出并用这些数据作弊?)。但是....我不认为这会导致任何技术问题,只要您按原样对待它,这基本上是一个您无法搜索、排序或过滤的二进制字段。
    • 感谢@Paul,是的,它有效,我正在寻找“最佳实践”。如果我不核心数据,你建议使用什么?我正在考虑将数据存档或序列化到磁盘,但它不适合查询。
    • 如果这只是不透明的数据,您不需要检查数据本身,那么我会说将其存档到磁盘,将路径存储在您的核心数据对象上。如果您需要反序列化这些对象以找出您正在寻找的对象,那么我会说咬紧牙关,只需将其添加到您的数据模型中并将其与您的其他核心数据实体相关联。通过将它们存储为原始 json,您试图避免的痛点是什么?
    • 谢谢@Paul。这个数据结构包含嵌套的字典和数据数组,如果我将它们创建为实体,我最终可能会创建多个相关的实体,要么存储数据,要么读取数据将是相当多的代码......不整洁。 JSON 或 XML 似乎是存储此类数据的最佳格式。我有点不喜欢档案的存储文件路径的想法......
    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 2011-03-22
    • 2018-07-17
    • 2011-12-03
    • 1970-01-01
    • 2019-07-21
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多