2017-07-26 15 views
0

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

static func retrieveToDo() -> [ToDo] { 
    let fetchRequest = NSFetchRequest<ToDo>(entityName: "ToDo") 
    do { 
     let results = try managedContext.fetch(fetchRequest) 
     return results 
    } catch let error as NSError { 
     print("Could not fetch \(error)") 
    } 
    return [] 
} 

回答

0

的关系型

如果你已经TaskToDo实体toDostask分别之间的关系,那么你就在Task模型类找到属性为NSSettoDostaskToDo模型类中输入Task

ACCESS关系

如果你已经Task类型的对象可以很容易地通过使用taskObj.toDos它会返回一个NSSetToDo类型取该任务的toDos

如果您已经使用toDoObj.taskToDo类型的对象可以很容易地获取该待办事项的task它会返回一个Task

进行删除

如果删除Task对象toDos与该任务将被自动删除。

如果删除ToDo对象,然后它会自动从各个Task

样品编号

class CoreDataHelper { 
class func getFetchRequestforModelClass(_ className : NSManagedObject.Type) -> NSFetchRequest<NSFetchRequestResult> { 

    let stringClassName = String(stringInterpolationSegment: className) 

    let entityDescription = NSEntityDescription.entity(forEntityName: stringClassName, in: ManagedObjectContext) 

    let request = NSFetchRequest<NSFetchRequestResult>() 
    request.entity = entityDescription 

    return request 
} 

class func getAllTask() -> [Task]?{ 
    let fetchRequest = CoreDataHelper.getFetchRequestforModelClass(Task.self) 
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "task_id", ascending: true)] 
    var fetchedEntities:[Task]? 
    do 
    { 
     fetchedEntities = try ManagedObjectContext.fetch(fetchRequest) as? [Task] 
    }catch{ 
    } 
    return fetchedEntities 
}} 
+0

你可以给我写一些示例代码,请删除?我仍然不知道该怎么写。 – Cacaca

+0

我已经添加了代码检查,如果它有帮助。 –

+0

我仍然困惑......哭...如何从特定的任务删除toDos? – Cacaca

相关问题