核心数据关系(迅捷)

Lei*_*ton 6 core-data uitableview relationships ios swift

我正在构建一个需要核心数据关系的应用程序:

entityA <<---> entityB  (e.g. any given entityA can hold many entityB objects)
Run Code Online (Sandbox Code Playgroud)

我有两个带有entityA列表项的表视图,我希望能够在任何给定的entityA对象中存储entityB对象.

我刚开始使用与核心数据的关系(对于swift来说相当新),并且想学习如何使这项工作成功.有没有人有任何快速的教程,这对我来说有用,或者可以帮助我学习的任何其他资源?

对不起,如果我的问题没有多大意义,请让我澄清你是否需要.

谢谢!

更新:

这是我想要学习的更具体的一点.

假设我有实体"人"(属性可能包括姓名,年龄等)以及我的应用用户可以添加人的桌面视图.(我已经建立并知道如何做适当的)但是,现在我想添加实体"餐"(属性可能包括食品),而餐是我自己的桌面视图,我可以通过选择我的人来访问想要加一顿饭.每个人可以吃一顿以上,但每餐只能有一个人.

问题是:为了实现这一目标,我的核心数据模型fetchRequests等是什么样的?

希望足够清楚!:)

谢谢

在此输入图像描述

这是我创建一顿饭的功能的代码片段:

    func createMeal() {
    let entityDescription = NSEntityDescription.entityForName("Meal", inManagedObjectContext: managedObjectContext!)
    let meal = Meal(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)

    meal.mealName = mealNameTxt.text
    meal.mealItem1 = mealItem1Txt.text

    managedObjectContext?.save(nil)
}
Run Code Online (Sandbox Code Playgroud)

Ash*_*eeq 4

嗯,这很简单。举个例子,你有一个分支,分支有很多规格。首先,您需要转到 xcdatamodel 并创建数据实体

在此输入图像描述

然后打开编辑器(表格样式)并在分支实体中建立关系

在此输入图像描述

之后,您还需要在branchSpecs中设置关系拼写错误

在此输入图像描述

就是这样!您刚刚在 CoreData 实体之间创建了关系。您需要做的就是生成子类对象

在此输入图像描述

现在一切都准备好了。您将在分支类中找到一个 NSSet * 对象,它保存该分支的数据相关规范。您还会发现一个名为 addSpecsObject 的方法,您可以使用它来存储规格对象。

我的案例的代码示例:

Branch * branch = [NSEntityDescription insertNewObjectForEntityForName:@"Branch"
                                                  inManagedObjectContext:managedObjectContext];
    branch.name = obj.name;
    branch.lattitude = obj.latitude;
    branch.longitude = obj.longitude;
    branch.dispalyedDescription = obj.dispalyedDescription;


    for (FLBranchesSpecs * spec in obj.branchSpecs) {
        BranchSpecs * branchSpec = [NSEntityDescription insertNewObjectForEntityForName:@"BranchSpecs"
                                                        inManagedObjectContext:managedObjectContext];
        branchSpec.type = @(spec.type);
        branchSpec.key = spec.key;
        branchSpec.value = spec.value;
        [branch addSpecsObject:branchSpec];
    }

    NSError *error;
    if (![managedObjectContext save:&error])
        NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
Run Code Online (Sandbox Code Playgroud)

与你想要的类似的东西

let person: AnyObject = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: self.managedObjectContext!)
    //do you code assignment here
    for meal in listOfMeals{
        person.addMealObject(meal)
    }
    var error: NSError?
    self.managedObjectContext?.save(&error)
Run Code Online (Sandbox Code Playgroud)