在核心数据中保存动态生成的带有父->子关系的JSON数据?

Posted

技术标签:

【中文标题】在核心数据中保存动态生成的带有父->子关系的JSON数据?【英文标题】:Save dynamically generated JSON data with parent-->children relationship in core data? 【发布时间】:2016-03-24 11:39:04 【问题描述】:

我的 JSON 响应中有动态子对象来填充首选项数据,每个首选项都可以有“孩子”并且可以有多个对象(以嵌套方式,详细说明)。我需要将此数据保存到核心数据中,然后从那里加载。当用户在途中选择一个时,我还需要保存用户选择。

    在实体模型中实现实体关系以保存所有这些数据的最佳方法是什么?

    对于这种场景,这是一种好的 JSON 格式吗?

EX: 手机 --> samsung --> s3(当用户点击时可以走得更远)

    preferences =     [
               
          id = 1;
          name = Mobiles;
          children = 
            [
                 
                    id = 3;
                    name = Samsung;
                    children = [];
                ,
                 
                    id = 4;
                    name = Nokia;
                    children = [];
                
           ] 
        ,
        
            id = 2;
            name = Electronics;
            children =  [
                 
                    id = 5;
                    name = Samsung Curve TV;
                    children = [];
                
            ]
  
    ]

【问题讨论】:

【参考方案1】:

ad 2. 使用这种数据格式,您将需要使用递归或堆栈来获取单个实体。

我建议采用稍微不同的方法。

[
  
    "id": 1,
    "name": "Mobiles"
  ,
  
    "id": 2,
    "name": "Electronics",
    "parent_id": 1
  ,
  
    "id": 3,
    "name": "Samsung"
    "parent_id": 1
  ,
  
    "id": 4,
    "name": "Nokia"
  ,
  
    "id": 5,
    "name": "Samsung Curve TV"
    "parent_id": 2
  
]

有了这样的结构,您就不必使用递归或堆栈了。 单个枚举足以将数据插入 CoreData。

ad 1. 您的实体需要有“父”和“子”关系。

【讨论】:

以上是关于在核心数据中保存动态生成的带有父->子关系的JSON数据?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据父/子上下文保存失败

从多个子组件获取数据到父组件

使用带有实体框架的动态字段按子记录排序

在 Hibernate/JPA 中保存一个带有子对象的对象 - @OneToMany

从核心数据获取请求中排除反向关系

获取核心数据中一对多关系的计数