删除,获取CoreData中关系中属于另一个的项

时间:2017-07-26 17:09:28

标签: ios core-data entity-relationship

我在CoreData中创建Task和ToDo之间的关系。每个任务可以包含许多toDos,但toDos只能属于特定任务。如果我删除任务,所有toDos属于该任务也应删除,所以我将关系设置为Cascade。我现在的代码仅用于获取和删除所有toDos。我知道如何将toDos保存到特定任务,但我不知道如何获取和删除它们。我的代码就像得到所有toDos,例如

struct BaseScriptable {
    virtual ~BaseScriptable() = default;
    virtual BaseScriptable * clone() = 0;
    virtual void update() = 0;
};

template<typename D>
struct Scriptable: BaseScriptable {
    BaseScriptable * clone() override final {
        return new D{*static_cast<D *>(this)};
    }
};

struct PlayerScript: Scriptable<PlayerScript> {
    void update() override {}
};

int main() {
    BaseScriptable *script = new  PlayerScript;
    BaseScriptable *clone = script->clone();
}

1 个答案:

答案 0 :(得分:0)

关于关系

如果您将TaskToDo实体之间的关系分别设为toDostask,那么您将找到{{1}的属性toDos模型类中的NSSet类型,Task模型类中task类型的Task

访问关系

如果您ToDo类型的对象可以使用Task轻松获取该任务的toDos,那么它将返回taskObj.toDos的{​​{1}} NSSet类型。

如果您ToDo类型的对象可以使用ToDo轻松获取该问题的task,则会返回toDoObj.task

FOR DELETE

如果删除Task对象,则与该任务相关的Task将自动删除。

如果您删除了toDos个对象,那么它会自动从相应的ToDo

中删除

示例代码

Task