Objective-C - 像MySQL一样的核心数据关系的JSON格式 - 最佳实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Objective-C - 像MySQL一样的核心数据关系的JSON格式 - 最佳实践相关的知识,希望对你有一定的参考价值。

我有JSON喜欢:

{
    cities: {
        1: "London",
        3: "New York",
        9: "Tokio",
        10: "Moscow"
    },
    keywords: {
        120: "walk",
        121: "run",
        122: "eat",
        123: "lake"
    },
    parks: [
            {
                id: "1",
                likes: "5",
                parkName: "Park 1 in NEW YORK",
                city: "3", // id of the City NEW YORK
                keywords: [
                            "120",
                            "121"
                          ]
            },
            {
                id: "1",
                likes: "678",
                parkName: "Park 2 in NEW YORK",
                city: "3", // id of the City NEW YORK
                keywords: [
                            "120",
                            "123"
                          ]
            },
            {
                id: "1",
                likes: "416",
                parkName: "Park in London",
                city: "1", // id of the City London
                keywords: [
                            "123",
                            "122"
                          ]
            }, 
            ... so many ...
          ]
    }
}

所以,在Xcode中,我想这样使用:sample Xcode Core Data relationship

我创建NSManagedObject子类,我有这样的方法:

- (void)addParksObject:(PKParks *)value;
- (void)removeParksObject:(PKParks *)value;
- (void)addParks:(NSSet<PKParks *> *)values;

但是,我希望使用城市和关键字的ID将Parks表连接到mysql中的另一个表。所以,我有很多公园,一些城市和关键词。

这种方式对存储数据的方法是否正确?

  1. 我应该存储城市和关键字的ID吗?
  2. 我应该手动连接表,就像MySQL一样吗?
  3. 我应该将JSON格式更改为无ID吗?

例如JSON:

 {
    parks: [
            {
                id: "1",
                likes: "5",
                parkName: "Park 1 in NEW YORK",
                city: "NEW YORK", 
                keywords: [
                            "walk",
                            "run"
                          ]
            },
            {
                id: "1",
                likes: "678",
                parkName: "Park 2 in NEW YORK",
                city: "NEW YORK", 
                keywords: [
                            "walk",
                            "lake"
                          ]
            },
            {
                id: "1",
                likes: "416",
                parkName: "Park in London",
                city: "London",
                keywords: [
                            "lake",
                            "eat"
                          ]
            }, 
            ... so many ...
          ]
    }
}
答案

但是,我希望使用城市和关键字的ID将Parks表连接到MySQL中的另一个表。

这是认为Core Data就像SQL一样的经典错误。它使用SQLite,但SQL式思维会让你陷入困境。

核心数据旨在保存模型对象的实例。这些对象可能具有也是模型对象的属性。这是核心数据关系。您不使用外键或对象ID来表示关系,而是使用模型对象属性。核心数据将其转换为SQL或从SQL转换。

您可能想要了解一下how Core Data relationships work

以上是关于Objective-C - 像MySQL一样的核心数据关系的JSON格式 - 最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

如何在Objective-C中像Twitter一样显示预览

C# 是像 Objective-C 和 C++ 一样的 C 超集吗?

Objective-C 和 NSCoding 原始数据类型,就像旧的 C 代码一样

核心数据。是不是可以像使用普通 SQL 一样创建视图

像 iPhone 通讯录应用一样的核心数据搜索?

博看|现代Objective-C语法