Цель C - связь с основными данными - PullRequest
0 голосов
/ 28 апреля 2011

У меня проблема с отношениями Core Data.Я передаю своему методу addData массив данных.Это массив словаря.Каждый словарь имеет 3 ключа, «A», «B», «C».Ключ C хранит другой массив словаря, который имеет 3 ключа.Первый массив имеет тип элемента, а второй элемент подтипа.Теперь, как я могу поместить его в CoreData? Имя сущности "Тип" и "Подтип".И как я могу взять его из CoreData?Спасибо

1 Ответ

1 голос
/ 28 апреля 2011

Вам необходим объект для Type, который будет иметь атрибуты a и b и отношение c (нижний регистр для соответствия соглашениям о присвоении имен). c - это отношение 1 ко многим к сущности Subtype. Объект Subtype имеет три атрибута, по одному для каждого из ключей словаря, и отношение type, которое является обратным отношением для Type объекта c.

Используйте следующий псевдокод (я не могу быть обеспокоен деталями настройки основных данных. Вы можете легко прочитать документы ), чтобы помочь вам создать решение для заполнения вашей модели из исходного массива. словарей.

for (NSDictionary* aType in typeArray)
{
    // Create a managed object for the dictionary called aTypeManagedObject

    [aTypeManagedObject setValue: [aType objectForKey: @"A"] forKey: @"a"];
    [aTypeManagedObject setValue: [aType objectForKey: @"B"] forKey: @"b"];

    for (NSDictionary* subType in [aType objectForKey: @"C"])
    {
        // Create a managed object for the dictionary called aSubtypeManagedObject

        // set the attributes in the same way as a and b above

        [aSubTypeManagedObject setValue: aType forKey: @"type"]; // Automatically updates the aType's c relationship
    }
}

// Save all the changes

В следующий раз, когда вы получите управляемый объект Type из основного хранилища данных, все это уже будет настроено.

[aTypeManagedObject valueForKey: @"c"]

вернет массив объектов подтипа для этого объекта Type.

...