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

问题描述 投票:0回答:1

我有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 ...
          ]
    }
}
ios objective-c json xcode core-data
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.