我知道 SwiftUI 使用状态驱动渲染。所以我假设,当我删除核心数据实体条目时,我的包含核心数据元素的列表会立即刷新。我使用此代码,它成功地清理了我的实体:
func deleteAll()
{
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = ToDoItem.fetchRequest()
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
let persistentContainer = (UIApplication.shared.delegate as! AppDelegate).persistentContainer
do {
try persistentContainer.viewContext.execute(deleteRequest)
} catch let error as NSError {
print(error)
}
}
Run Code Online (Sandbox Code Playgroud)
为了让我的视图中的列表视觉上为空,我必须在之后离开视图(例如使用“self.presentationMode.wrappedValue.dismiss()”)并再次打开它。好像这些值仍然存储在内存中的某个地方。这当然不是用户友好的,我确信我只是监督了一些可以立即刷新列表的内容。也许有人可以帮忙。
我正在尝试使用NSBatchDeleteRequest删除一堆实体,其中许多实体都删除了级联和/或无效规则.
我第一次尝试删除任何内容都失败了,我收到的NSError包括字符串"批删除不支持删除规则".我曾经认为删除这些东西很好,但我负责确保在保存之前满足所有约束条件.
我应该能够批量删除这些托管对象吗?(我想保留删除规则,其他删除路径没有简单的方法来知道要删除哪些对象集合)在这种情况下,某些类型的批删除工作是否正常,但其他人没有?(说谓词失败,但是对象ID列表有效吗?)