gpt4 book ai didi

swift - 如何确认核心数据执行

转载 作者:行者123 更新时间:2023-11-28 06:27:08 25 4
gpt4 key购买 nike

我正在尝试确认核心数据中的所有数据是否已通过以下来源删除(其中“CoreDataHelper.getCoreDataHelper().context”是 NSManagedObjectContext)

public static func delete(predicates: [NSPredicate] = []) {
let fetchRequest = request(predicates: predicates)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
let result1 = try CoreDataHelper.getCoreDataHelper().context.fetch(fetchRequest)
NSLog("Delete batch size: %d", result1.count)
let result2 = try CoreDataHelper.getCoreDataHelper().context.execute(deleteRequest)
NSLog("Delete request succeeded: %d", result2)
} catch {
NSLog("Delete request failed")
return
}
}

当我测试它时,日志中显示以下内容

Delete batch size: 1

Delete request succeeded: 250432

但是实际看到数据的时候,好像并没有删除。我尝试添加数据,因为发生错误,数据已经在核心数据中。

public static func add(from object: Dictionary<String, Any>) -> NSManagedObjectProtocol? {
let exists = fetch(id: object)
if exists.count > 0 {
NSLog("Object already exists in CoreData : %@", object.description)
return nil
} else {
return newObject(object: object) as NSManagedObjectProtocol
}
}

Object already exists in CoreData : ....

所以我的问题是我怎么知道 NSBatchDeleteRequest 的执行功能是否正常工作。是否有一个返回值可以用来确认执行是否没有错误?

最佳答案

删除后保存你的NSManagedContext:

public static func delete(predicates: [NSPredicate] = []) {
let fetchRequest = request(predicates: predicates)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
...
let result2 = try CoreDataHelper.getCoreDataHelper().context.execute(deleteRequest)
//save context
try CoreDataHelper.getCoreDataHelper().context.save()
} catch {
NSLog("Delete request failed")
return
}
}

关于swift - 如何确认核心数据执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41533954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com