开发者

Objective C - Core Data relationship

开发者 https://www.devze.com 2023-03-01 11:11 出处:网络
i\'ve a problem with Core Data relationship. I pass to my method addData an array of data. It is an array of dictionary. Every dictionary have 3 keys, \"A\", \"B\", \"C\". Key C store another array of

i've a problem with Core Data relationship. I pass to my method addData an array of data. It is an array of dictionary. Every dictionary have 3 keys, "A", "B", "C". Key C store another array of dictionary that have 3 keys. The first array is of item Type and the second of item Subtype. Now, how can i place it into CoreData?The entity name is "Type" and "Subtype". And how can i take it from CoreData? Th开发者_运维技巧anks


You need an entity for Type which will have attributes a and b and a relationship c (lower case to conform with naming conventions). c is a 1 to many relationship to the Subtype entity. The Subtype entity has three attributes, one for each of the dictionary's keys and a relationship type which is the inverse relationship for the Type object's c.

Use the following pseudocode (I can't be bothered with the detail of setting up core data. You can easily read the docs) to help you create a solution to populate your model from the original array of dictionaries.

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

Next time you fetch the Type managed object from the core data store, all that will be set up already.

[aTypeManagedObject valueForKey: @"c"]

will return an array of the subtype objects for that Type object.

0

精彩评论

暂无评论...
验证码 换一张
取 消