簡體   English   中英

刪除,獲取CoreData中某個關系中屬於另一個的項目

[英]delete, fetch a item that belong to another in a relationship in CoreData

我在CoreData中創建Task和ToDo之間的關系。 每個任務可以包含許多待辦事項,但待辦事項僅屬於特定任務。 如果刪除任務,則也應刪除該任務的所有待辦事項,以便將關系設置為Cascade。 我現在擁有的代碼僅用於獲取和刪除所有待辦事項。 我知道如何將toDos保存到特定任務,但是我不知道如何獲取和刪除它們。 我的代碼就像全部完成任務,例如

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 []
}

關於關系

如果你已經之間的關系, TaskToDo實體toDostask分別然后你會發現一個屬性作為toDos類型NSSetTask模型類, task類型的TaskToDo模型類。

訪問關系

如果你已經類型的對象Task可以很容易地獲取toDos通過使用任務taskObj.toDos它會返回一個NSSetToDo類型。

如果您有一個ToDo類型的對象,可以使用toDoObj.task輕松獲取該toDo的task ,它將返回一個Task

刪除

如果刪除Task對象, toDos與該任務相關的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
}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM