如何在 Core Data 中创建数据模型?

Posted

技术标签:

【中文标题】如何在 Core Data 中创建数据模型?【英文标题】:How to create a data model in Core Data? 【发布时间】:2017-02-27 12:57:23 【问题描述】:

我是核心数据的新手,我想为事件创建一个数据模式。我有两个实体,

实体 1:具有属性 eventName、eventId 和 eventTime 的 Event。 JSON 的样子,


    
        "eventName": "Dance",
        "eventId": 113,
        "eventTime": 10-10-2017
    ,
    
        "eventName": "Painting",
        "eventId": 113,
        "eventTime": 10-10-2017
    ,
    ........
    ........
    
        "eventName": "Swimming",
        "eventId": 111,
        "eventTime": 10-10-2017
    

实体 2. EventKeywordsAndIds 带有属性关键字和 eventIds。 JSON 的样子,


    "keyword": "aaa",
    "eventIds": [
      119,
      111,
      112,
      116
    ]
  ,
  
    "keyword": "aab",
    "eventIds": [
      114,
      183,
      111,
      033,
      113
    ]
  

我轻松地创建了“实体 1”,因为它非常简单直接。我的问题是,

    如何在数据模型中创建“Entity 2”属性 如何解析 JSON 值并存储在其中和 如何在两个实体之间建立关系。

有什么帮助吗?

【问题讨论】:

先阅读:developer.apple.com/library/content/documentation/Cocoa/… 【参考方案1】:

如何在数据模型中创建“Entity 2”属性?

为此,您需要先创建另一个名为EventID 的实体。添加一个名为id 的属性并将其设为Integer32 类型。之后,通过单击“关系”部分中的“+”来创建从Entity2EventID 的“对多”关系,这同时回答了您的第三个问题。这是您应该拥有的图片:

请注意,您应该为右侧的“类型”属性选择“对多”。您还应该考虑设置其他属性。

如何解析JSON值并存储在其中?

如果你使用 SwiftyJSON,这应该很容易。

【讨论】:

这个答案是正确的,但我不确定创建一个单独的 EventID 实体是否有价值。我将使用单个字符串属性创建第二个实体Keyword,然后在EventKeyword 之间建立多对多关系。 @DaveWeston 您可以在核心数据中创建多对多关系吗?我以为我在读不到的地方读到了。 当然可以:developer.apple.com/library/content/documentation/Cocoa/…

以上是关于如何在 Core Data 中创建数据模型?的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 自动迁移不会在我的新模型中创建新实体

在 Core Data 中创建关系以执行删除

controllerDidChangeContent:每次在 Core Data 中创建 ManagedObject 时调用

多上下文麻烦。无法在 Core Data 中创建两个队列(主队列和私有队列)保存数据

如何在 Core Data 模型中动态创建新实体(表)?

如何在 R 中创建线性和逻辑回归模型?