ios - Objective-C - 核心数据关系的 JSON 格式,如 MySQL - 最佳实践

标签 ios objective-c json xcode core-data

我有像这样的 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 ...
          ]
    }
}

最佳答案

But, I was expecting to connect Parks table to another tables like in MySQL, using id of the Cities and Keywords.

这是认为 Core Data 就像 SQL 的典型错误。它使用 SQLite,但 SQL 风格的思维方式会给您带来麻烦。

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

您可能想阅读一些有关 how Core Data relationships work 的内容。 .

关于ios - Objective-C - 核心数据关系的 JSON 格式,如 MySQL - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930095/

相关文章:

iphone - UIApplicationDidFinishLaunchingNotification的使用

ios - ScrollToItem 无法正常工作

ios - 在数组中查找最小数字时不考虑负数

java - 如何使用 GSON 库将 json 文件读入 java

Java 中类似 JavaScript 的对象数据类型?

json - 如何在 HttpContent 中 POST Json 并在 API Controller 中解析它?

ios - 创建新的构建配置导致 header 未找到错误

ios - 如何设置特定的 UITableViewCell 分隔符位置?

objective-c - 为 UIScrollView 创建大 View 的便捷方法?

php - 变量访问 - 通过 PHP 的 MySQL 不工作