删除Core Data中的对象快速清除删除问题

时间:2015-10-13 18:17:44

标签: swift core-data

使用我认为已正确设置的部分代码,但它会产生不需要的结果。假设我有一个核心数据存储,设置如此,有一个Main,Secondary,Third,Fourth和Fifth。如果我删除主要对象,那么我想要在此实体级联中为此对象设置的所有关系是否与此实体下设置的所有关系都正确?

辅助与To-Many关系中的Main相关,Main在此关系中设置为To-One。第三个与To-Many关系中的Main相关,Main设置为To-One。第二个与To-One中的Third相关,而Third与To-Many中的第三个相关。第四个是与To中的Main相关,Main是To-One。第五个永远不会被删除,并且与To-One中的第四个相关,而第四个与To-Many相关。现在就是设置。

现在让我说我删除了Main我想删除与此对象相关的所有对象,所以我将此实体内部的所有关系设置为Cascade?直接删除所有与此对象的关系,包括第五个永不删除的对象?

还可以说我想删除与Main对象相关的Third中的所有对象,而不实际删除主对象我设置与此对象的关系,并将其设置为nullify?

我遇到的问题是,我试图删除与Main相关的所有对象,除非第五个对象被删除,因为我不希望这些对象被触及,所以我将关系设置为拒绝? 此外,当我尝试删除第三个对象时,我可以删除它们一次,但是当我尝试另外清除那些相同类型的对象时,即使主要对象完全不同,它也不会让我这样做。我用来删除这些对象的代码是:

@IBAction func clearStats(sender: AnyObject) {
    let alertController: UIAlertController = UIAlertController(title: "Clear?", message: "Do you wish to Clear the Info?", preferredStyle: .Alert)
    let deleteAction: UIAlertAction = UIAlertAction(title: "Delete Stats", style: .Destructive) { (ACTION) -> Void in

    let fetchRequest = NSFetchRequest()
    fetchRequest.entity = NSEntityDescription.entityForName("Third", inManagedObjectContext: self.context)
    fetchRequest.predicate = NSPredicate(format: "counted = %@", self.deckRecord!)
    fetchRequest.includesPropertyValues = false
    do {
        if let results = try self.context.executeFetchRequest(fetchRequest) as? [NSManagedObject] {
            for result in results {
                self.context.deleteObject(result)
            }
            try self.context.save()
        }
        } catch let error as NSError {
        print(error.localizedDescription)
    }
    }
    let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
    alertController.addAction(cancelAction)
    alertController.addAction(deleteAction)
    presentViewController(alertController, animated: true, completion: nil)
}

0 个答案:

没有答案